python 爬取糗百
阿新 • • 發佈:2019-01-04
Python爬蟲爬取糗百
1、構造請求,檢視爬取的URL,因為糗百的內容有可能有多頁,並且內容很多,所以在爬取的時候選擇只爬取文正的ID以及內容
2、構造爬取過程中的正則表示式,篩選出所需內容(根據網頁原始碼)
3、對爬取內容進行輸出展示
#!/usr/bin/env python
#coding=utf-8
import urllib2
import urllib
import re
import timefrom urllib2
import HTTPError
def getdata(url):
user_agent = 'Mozilla/5.0(Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/56.0.2924.87 Safari/537.36'
request = urllib2.Request(url=url,headers=headers)
response = urllib2.urlopen(request)
content = response.read()
pattern = re.compile('<ahref="/article/(\d+)"\s+target.*?contentHerf.*?<span>(.*?)</span>',re.S)
result = re.findall(pattern
returnresult
if __name__ == '__main__':
start_page = 1
end_page= 35
fori inrange(start_page,end_page):
url = 'http://www.qiushibaike.com/8hr/page/'+str(i)+'/?s=4969805'
res= getdata(url)
ifres == None:
print'no result return'
else:
print line[0],line[1].replace('<br/>','')
time.sleep(1)
檢視網頁的原始碼如下
<a href="/article/118806702"target="_blank" class='contentHerf' >
<div class="content">
<span>巨招財的石頭,左下角發發發發</span>
</div>
</a>
根據文字內容構造瞭如下的正則
re.compile('<ahref="/article/(\d+)"\s+target.*?contentHerf.*?<span>(.*?)</span>',re.S)
re.S表示的是在普通的正則中(.)這個符號不能代表換行符,利用這個模式之後,換行符同樣能用(.)來表示單個字元(.符號用括號括起來,防止看不清楚)
之後就可以對文字進行輸出處理了。