一、引入模組
因為urlopen功能比較簡單,所以設定**ip需引入proxyhandler和build_opener模組,ip的獲取可以上西祠**查詢
import re
from urllib.request import request,build_opener,proxyhandler
base_url = ''
headers =
ip_list = [
'220.249.185.178:9999',
'124.193.85.88:8080',
'116.62.194.248:3128',
'112.115.57.20:3128',
'171.37.143.73:9797'
]proxies =
二、設定**ip,獲取網頁內容
def down_load_qiubai_info(pageindex):
full_url = base_url + str(pageindex) + '/'
# print(full_url)
#新增headers設定爬蟲目標以及使用者標識
#如果只寫full_url等於告訴網頁獲取網頁內容的不是自然人,而是程式
# 因為程式自帶 user_agent:python urllib / 3.6
request = request(full_url,headers=headers)
#設定**ip
proxies_handler = proxyhandler(proxies)
opener=build_opener(proxies_handler)
response = opener.open(request)
# 獲取對應網頁的全部內容
code = response.read().decode()
三、根據獲取的原始碼獲取糗事百科內容滑鼠右鍵檢查, 每個瀏覽器都不一樣我這裡用的是谷歌瀏覽器
注意:(.*?)表示要獲取的內容, 正則匹配的內容 從指定的開始位置 到全部內容結束 , 所以只需要指定開始的位置 不需要指定結束的位置 , 如果我們想要正則獲取某一對標籤裡面的內容的時候 , 那麼需要將這對標籤對寫完整 而且咋想要獲取的內容 , 上新增()例如:
#根據獲取的內容在網頁中的位置寫正則
pattern = re.compile(r'.*?.*?(.*?)
.*?.*?.*?(.*?).*?.*?(.*?).*?.*?(.*?)',re.s)
#在原始碼中查詢所有符合正則的內容
result = pattern.findall(code)
# print(result)
for name,age,href,content,stats,comment in result:
# strip去除 換行
#拼接url
detail_url = ''+ url
# print(detail_url)
#獲取原始碼
request = request(detail_url,headers=headers)
response = urlopen(request)
code = response.read().decode()
#根據位置寫正則
pattern = re.compile(r'.',re.s)
#在原始碼中查詢所有符合正則的內容
result = pattern.findall(code)
# print(result)
for x in result:
x = x.strip('\n')
# print(x)
#拼接url
url_list = ''+ x
print(url_list)
以上就是用正則爬取糗事百科的步驟。在寫正則的時候一定要注意要根據網頁原始碼來寫,想要獲取的內容用()括起來,
其他的不需要使用的內容用.*?或者其他元字元代替。
python 爬取糗事百科
step 1 構建乙個提取糗事百科笑話的函式import urllib2 import urllib import re import thread import time import sys reload sys sys.setdefaultencoding utf 8 defgetpage p...
Python 爬取糗事百科
coding utf 8 import urllib2 import urllib import re class qiushi def init self self.page 1 從網頁獲取糗事 def getqiushis self,page url page 偽裝瀏覽器 user agent ...
Python 爬取糗事百科
coding utf 8 import urllib2 import urllib import re class qiushi def init self self.page 1 從網頁獲取糗事 def getqiushis self,page url page 偽裝瀏覽器 user agent ...