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 爬虫系列:糗事百科最热段子的主要内容,如果未能解决你的问题,请参考以下文章