zoukankan      html  css  js  c++  java
  • 爬取糗事百科段子

    # 导入requests 和 BeautifulSoup
    import requests
    from bs4 import BeautifulSoup

    def download_page(url):
    # 定义头部,用来骗过浏览器
    headers ={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}
    # 这里我是用了代理,是我本地电脑上跑的一个程序,可以随机寻找一个代理IP地址
    # 爬取大量数据的时候会用到
    # PROXY_POOL_URL = 'http://localhost:5555/random'
    # response = requests.get(PROXY_POOL_URL)
    # proxies = {"http:": "http://" + response.text}
    # html = requests.get(url,headers = headers,proxies = proxies)
    # 访问网页并获取HTML文件
    html = requests.get(url,headers = headers)
    return html.text
    def get_content(html,page):
    # 从返回的HTML网页中找到需要的作者,段子,年龄等信息
    output = """第{}页 作者:{} 性别:{} 年龄:{} 点赞:{} 评论:{} {} ------------ """ # 最终输出格式
    # 做一锅汤。
    soup = BeautifulSoup(html,'lxml')
    # 找到每一页每一个段子的信息
    content = soup.find(id = 'content')
    content_list = content.find_all('div',class_ = 'article')
    # 循环遍历每一个段子的信息
    for index in content_list:
    # 查询出作者的昵称
    author = index.find('h2').string
    # 获取段子内容
    content = index.find('div', class_= 'content').find('span').get_text() # 获取内容
    # 获取点赞和评论数的标签
    stats = index.find('div',class_ = 'stats')
    # 获取点赞数
    dianzan = stats.find('span',class_ = 'stats-vote').find('i').string
    # 获取评论数
    pinglun = stats.find('span',class_ = 'stats-comments').find('a').find('i').string
    # 获取作者的性别和年龄
    author_info = index.find('div',class_ = 'articleGender')
    # 这里首先判断作者是否匿名
    if author_info is not None:
    class_list = author_info['class']
    # 根据标签来判断作者的性别
    if 'womenIcon' in class_list:
    gender = '女'
    elif 'manIcon' in class_list:
    gender = '男'
    else:
    gender = ''
    age = author_info.string
    else:
    gender = ''
    age = ''
    # 调用函数将数据写入文件中
    save_text(output.format(page,author,gender,age,dianzan,pinglun,content))
    # 将数据写入文件中的函数
    def save_text(*args):
    # 遍历出入的每一组数据,然后依次写入
    for index in args:
    with open(r"D:pythonqiushibaike.txt","a",encoding = "utf-8") as f:
    f.write(index)

    def main():
    # 主函数,循环查询可以查询很多页
    for index in range(1,2):
    # 首先定义url地址
    url = "https://qiushibaike.com/text/page/{}".format(index)
    # 调用函数下载网页
    html = download_page(url)
    # 调用函数获取我们需要的数据
    get_content(html,index)

    if __name__ == "__main__":
    main()
  • 相关阅读:
    017 文件xfs_repair恢复,xfs_dump恢复,lvm动态扩容
    003 rsync客户端与服务端小脚本
    002 rsync守护进程传输方式详解
    001 期中架构简介、备份初识
    016 netstat、磁盘分区(fdisk、gdisk)
    015 Linux中常用的信号、HUP信号
    014 进程(PS与TOP)
    013 源码安装(Nginx&php为例)
    本地、远程仓库的搭建
    第八章
  • 原文地址:https://www.cnblogs.com/cong12586/p/13333774.html
Copyright © 2011-2022 走看看