import json
from multiprocessing import pool
import requests
from requests.exceptions import requestexception
import re
#建構函式,輸入乙個url**,傳送請求後返回該**的響應結果
def get_one_page(url):
try:
response = requests.get(url)
if response.status_code == 200:
return response.text
return none
except requestexception:
return none
#構造提取頁面欄位的函式,輸入乙個html,提交以字典形式儲存的字段結果
def parse_one_page(html):
# 用來找到起始點,
# .*?board-index.*?<\d+>用來找到電影的排名
# 代表結束符
# .*?name">(.*?)用來匹配電影的名稱name
# .*?star">(.*?)
用來匹配電影的大牌演員star
# .*?releasetime">(.*?)
用來匹配上映時間releasetime
#電影得分由整數和小數共同組成
# .*?integer">(.*?)用來匹配得分的整數部分integer
# .*?fraction">(.*?)用來匹配得分的小數部分fraction
# re.s可以匹配到換行符
pattern = re.compile('.*?board-index.*?(\d+).*?data-src="(.*?)".*?name">(.*?).*?star">(.*?)
.*?releasetime">(.*?)
' + '.*?integer">(.*?).*?fraction">(.*?).*?',re.s)
items = re.findall(pattern,html)
# 多元陣列形式的items轉換成字典形式進行儲存
for item in items:
yield
#儲存提取結果
def write_to_file(content):
# encoding='utf-8'保證輸出為中文
# ensure_ascii=false保證輸出為中文
with open('maoyan_100.txt', 'a', encoding='utf-8') as f:
# 用json.dumps方法把字典形式的content轉化為字串形式
# '\n'代表換行符
f.write(json.dumps(content, ensure_ascii=false) + '\n')
f.close()
#構造主函式
def main(offset):
# 觀測url的變化規律為offset,offset作為引數傳入main方法
url = ''+str(offset)
#呼叫方法
html = get_one_page(url)
parse_one_page(html)
for item in parse_one_page(html):
#呼叫方法
write_to_file(item)
#啟動if __name__ == '__main__':
#**offset的變化規律為0,10,20,30,前後頁碼的offset相差10,總的的頁碼數為10.
for i in range(10):
main(i*10)
pool = pool() # 宣告乙個程序池
# 程序池的兩個引數,乙個是main方法,乙個是陣列[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
pool.map(main, [i * 10 for i in range(10)])
Python實戰 抓取貓眼電影TOP100
話不多說,直接上 coding utf 8 import requests from requests import requestexception import re import json from multiprocessing import pool def get one page ur...
貓眼電影Top100實戰
今天學習了使用爬蟲抓取貓眼電影top100,特此總結學習途中遇到的問題和知識 1.使用requests請求被禁 然後在get請求中response requests.get url,headers headers 解決方法2 使用selenium抓取網頁源 詳情見selenium版本 2.strip...
python多程序抓取貓眼電影top
pip install requests 使用第三方庫requests抓取,import requests import re import json import multiprocessing from requests import requestexception 獲取要抓取網頁源 defg...