• Python 爬虫系列:糗事百科最热段子


    1.获取糗事百科url

    http://www.qiushibaike.com/hot/page/2/    末尾2指第2页

    2.分析页面,找到段子部分的位置, 需要一点CSS和HTML的知识

    3、编写代码

     1 import urllib.request
     2 from bs4 import BeautifulSoup
     3 from urllib.request import URLError
     4 from urllib.request import HTTPError
     5 import time
     6 # 调用 publicHeaders 文件的方法
     7 from 爬虫.publicHeaders import set_user_agent
     8 
     9 
    10 # 抓取网页
    11 def download(pagenum):
    12     url = r'https://www.qiushibaike.com/hot/page/'
    13 
    14     # 分页下载
    15     for i in range(1,pagenum):
    16         #组装url
    17         new_url = url + str(pagenum)
    18         print(new_url)
    19         # 有的时候访问某个网页会一直得不到响应,程序就会卡到那里,我让他1秒后自动超时而抛出异常
    20         header = set_user_agent()
    21         while 1:
    22             try:
    23                 req = urllib.request.Request(url=new_url,headers=header)
    24                 reponse = urllib.request.urlopen(req,timeout=1)
    25                 break
    26             # HTTPError是URLError的子类,在产生URLError时也会触发产生HTTPError。因此应该先处理HTTPError
    27             except HTTPError as e:
    28                 print(e.code)
    29                 # 对于抓取到的异常,让程序停止1.1秒,再循环重新访问这个链接,访问成功时退出循环
    30                 time.sleep(1.1)
    31             except URLError as err:
    32                 print(err.reason)
    33         # 正常访问,则抓取网页内容
    34         html = reponse.read().decode('utf-8')
    35         # 找到所有的class名称为content 的div
    36         soup = BeautifulSoup(html,"html.parser")
    37         contents = soup.findAll("div",{"class":"content"})
    38         # # 循环遍历保存每一项,并保存
    39         with open("E:JustForFun.txt", "w") as f:
    40             for item in contents:
    41                 # 有些内容不是utf-8格式
    42                 try:
    43                     each_story = item.get_text()
    44                 #print(type(each_story))
    45                     f.writelines(each_story)
    46                 except:
    47                     pass

    4、执行以下,结果如下:

  • 相关阅读:
    《基于大数据的高考志愿推荐系统的设计与实现》论文笔记(三)
    《高考志愿智能填报系统的设计与实现》论文笔记(二)
    一个简单但能考察C语言基础的题目
    C语言入坑指南-数组之谜
    八大排序算法
    vim学习
    C++/Python冒泡排序与选择排序算法详解
    Python查找最长回文暴力方法
    悬空指针与野指针
    二分查找
  • 原文地址:https://www.cnblogs.com/scios/p/8673033.html
Copyright © 2020-2023  润新知