又开始了新的篇章,本熊继续一个Python小白的修行之路,这次要爬取糗事百科主页的段子,恩 。。看起来不错的样子,只是段子不能吃 ,不然,啧啧。。。
相信很多人有去糗百看段子减压的习惯,如果能把这些段子爬下来,以后即便到了一个没网的地方 ,只要文本在手就不会冷场,还是好处多多的。3.2..1...开始爬虫之旅(今天说了两段废话,这习惯得改)
今天的爬虫主要是为了复习下正则,所以相对还是可以的,那么先来看一下网页源代码吧
需要爬的就是被圈起来的作者名、好笑数(大概类似于点赞量)和正文内容,看起来不是很难的样子,那么,上代码
import re
import bs4
import urllib
import urllib2
import time
f = open('QB.text','a+')
def gethtml():
for i in range(1,4):
url = 'http://www.qiushibaike.com/8hr/page/%d/'%i
user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0'
headers = { 'User-Agent' : user_agent }
response = urllib2.Request(url, headers=headers)
html = urllib2.urlopen(response).read()
pattern = re.compile(r'<div class="author clearfix">.*?href.*?<img src.*?title=.*?<h2>(.*?)</h2>.*?<div class="content">(.*?)</div>.*?<i class="number">(.*?)</i>',re.S) #在正则中S可用于大小写匹配
reg = re.finditer(pattern,html)
for item in reg:
i = re.sub(r'<span>', '', item.group(2)) # 由于按照上面的正则会使结果中出现我们不需要的标签,使用sub函数进行替换
i = re.sub(r'<br/>', '', i)
i = re.sub(r'</span>','',i)
f.write(item.group(1)+item.group(3)+'\n'+i)
f.close()
gethtml()
有关代码部分的问题请见注释。
欢迎大神批评指教,THANKS