【Python3.6】糗事百科爬蟲
阿新 • • 發佈:2018-12-25
程式碼連結:https://gitee.com/AI-Echo/codes/kox2aqn4jwi8c6b70l91e25
糗百段子在這樣的div標籤中,
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
import requests
from bs4 import BeautifulSoup as bs
#檢查url是否為有效連結(以後補)
#讀取html頁面
def getHtml(parm):
#加上headers,偽裝成瀏覽器,因為有的網站有反爬措施
Headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
url='https://www.qiushibaike.com/hot/page/'+str(parm)
#request物件,傳送一個request請求
reponse=requests.get(url,headers=Headers)
#返回reponse,讀取伺服器響應的內容,可通過reponse.encoding指定編碼格式
html=reponse.text
return html
#解析html頁面
def parseHtml(parm):
html=getHtml(parm)
soup = bs(html,"html.parser") #新建BeautifulSoup物件
#find_all用法:
#soup.find_all("p", "title")
#返回值:[<p class="title"><b>The Dormouse's story</b></p>]
cont=soup.find_all('div' ,'content')
#print(soup.find_all('div','content'))
items=[]
for x in cont:
#get_text()方法:用來獲取標籤裡面的文字內容,在括號裡面加"strip=True"可以去除文字前後多餘的空格
items.append(x.get_text(strip=True))
#print(items)
return items
#按任意鍵逐條列印段子
def getAll(parm):
num=0
for x in parseHtml(parm):
num += 1
print("第%d頁第%d條:\n%s\n" %(parm,num,x))
#按回車鍵繼續,python2中為raw_input
if input("按回車鍵繼續閱讀下個段子..."):
pass
parm+=1
getAll(parm)
if __name__ == '__main__':
#從第一頁開始
getAll(1)