importrequests
from lxml import
etree
importre#
爬取糗事百科所有列表頁資訊
class
qiushi():
def__init__
(self, base_url):
self.base_url =base_url
self.max_page =self.get_max_page()
self.get_data()
#獲取最大頁數
defget_max_page(self):
response =requests.get(self.base_url)
html_str =response.text
html =etree.html(html_str)
max_page = html.xpath('
//ul[@class="pagination"]/li[last()-1]/a/span/text()')
max_page =int(max_page[0].strip())
return
max_page
#發起請求獲取資料
defget_data(self):
#迴圈獲取每一頁的資料
for page in range(1, self.max_page + 1):
base_url = '
'.format(page)
response =requests.get(base_url)
html_str =response.text
html =etree.html(html_str)
result = html.xpath('
//div[@class="recommend-article"]/ul/li')
all_list =
for site in
result:
#print(type(site))
#看看裡面是什麼
#print(etree.tostring(site, pretty_print=true,encoding='utf-8').decode('utf-8'))
qiushi_info ={}
funny_number = site.xpath('
.//div[@class="recmd-num"]/span[1]/text()
') #
搞笑數 comment_number = site.xpath('
.//div[@class="recmd-num"]/span[4]/text()
') #
content = site.xpath('
.//a[@class="recmd-content"]/text()
') #
內容 pic = site.xpath('
.//a[contains(@class, "recmd-left")]/img/@src
') #
username = site.xpath('
.//span[@class="recmd-name"]/text()
') #
使用者暱稱
#all函式 所有的都為真 返回真 只要有乙個假 則返回假
#any函式 只要有乙個為真 則返回真
#過濾掉廣告
ifall([funny_number, comment_number, content, pic, username]):
qiushi_info[
'funny_number
'] =funny_number[0]
qiushi_info[
'comment_number
'] =comment_number[0]
qiushi_info[
'content
'] =content[0]
#拼接url
#獲取原始大小 有些沒有問號 就是原始if"
?"inpic:
pattern = re.compile('
(.*?)\?')
pic =pattern.findall(pic)[0]
qiushi_info[
'pic
'] =pic
qiushi_info[
'username
'] =username[0]
#整理輸出
print('
-------------------第{}頁------------------------
'.format(page))
for i in
all_list:
(i)if
__name__ == "
__main__":
base_url = '
'qiushi(base_url)
簡單爬取糗事百科
剛剛入門,對於爬蟲還要折騰很久才行,雖然很多功能還沒開始掌握,但是爬取下來就很開心,接下來還會爭取進步的。把自己出現的一些錯誤都加上了注釋,我目前還在學習當中,大家一起進步。期間學了乙個新的函式,在這裡分享下 strip 網上是這麼說的 需要注意的是,傳入的是乙個字元陣列,編譯器去除兩端所有相應的字...
python 爬取糗事百科
step 1 構建乙個提取糗事百科笑話的函式import urllib2 import urllib import re import thread import time import sys reload sys sys.setdefaultencoding utf 8 defgetpage p...
Python爬取糗事百科
一 引入模組 因為urlopen功能比較簡單,所以設定 ip需引入proxyhandler和build opener模組,ip的獲取可以上西祠 查詢 import re from urllib.request import request,build opener,proxyhandler base...