纯属娱乐,不过python是当下一门值得学的脚本语言
正则根据的是http://maoyan.com/board/4的h5页面
记得request.get中的headers要写自己浏览器的
选取排名的一部分内容爬取,保存到result.txt文件下
import re
from multiprocessing.dummy import Pool
import requests
from flask import json
from requests.exceptions import RequestException
def get_one_page(url,headers):
try:
response = requests.get(url,headers=headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
return None
# 正则匹配
def parse_one_page(html):
pattern = re.compile('<dd>.*?board-index.*?>(\d*)</i>.*?data-src="(.*?)".*?name"><a'
+'.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'
+'.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S)
items = re.findall(pattern,html)
for item in items:
yield {
'index': item[0],
'image': item[1],
'title': item[2],
'actor': item[3].strip()[3:],
'time' : item[4].strip()[5:],
'score': item[5]+item[6]
}
# 写入txt文件
def write_to_file(content):
with open('result.txt','a',encoding='utf-8')as f:
f.write(json.dumps(content,ensure_ascii=False)+'\n')
f.close()
# 循环爬取
def main(offset):
url = 'http://maoyan.com/board/4?offset=' + str(offset)
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
html = get_one_page(url,headers)
for item in parse_one_page(html):
print(item)
write_to_file(item)
# 主方法
if __name__ == "__main__":
pool = Pool()
pool.map(main, [i*10 for i in range(10)])