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

Posted 软件测试杂谈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、执行以下,结果如下:

 

以上是关于Python 爬虫系列:糗事百科最热段子的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫实战一之爬取糗事百科段子

python 爬虫--糗事百科段子

Python爬虫-爬取糗事百科段子

Python爬虫爬取糗事百科段子内容

python简单爬虫-----爬糗事百科段子

Python爬虫(十七)_糗事百科案例