Requests+正则表达式爬取猫眼电影

时间:2022-05-31 03:10:54
爬取单页内容

利用requests请求目标站点,得到单个网页HTML代码,返回结果

正则表达式分析

根据HTML代码分析得到电影的名称、主演、上映时间、评分、图片链接等信息。

保存至文件

通过文件的形式将结果保存,每一部电影一个结果一行json字符串

开启循环及多进程

对多页内容遍历,开启多进程提高爬取速度。

 

附上代码:

Requests+正则表达式爬取猫眼电影Requests+正则表达式爬取猫眼电影
 1 import json  2 from multiprocessing import Pool  3 import requests  4 from requests.exceptions import RequestException  5 import re  6 
 7 def get_one_page(url):  8     try:  9         response = requests.get(url) 10         if response.status_code == 200: 11             return response.text 12         return None 13  except RequestException: 14         return None 15 
16 def parse_one_page(html): 17     pattern = re.compile(r'<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'
18                          +'.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'
19                          +'.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S) 20     items = re.findall(pattern,html) 21     for item in items: 22         yield{ 23             'index':item[0], 24             'image':item[1], 25             'title':item[2], 26             'actor':item[3].strip()[3:], 27             'time':item[4].strip()[5:], 28             'score':item[5]+item[6] 29  } 30 
31 def write_to_file(content): 32     with open('result.txt','a',encoding='utf-8') as f: 33         f.write((json.dumps(content, ensure_ascii=False))+'\n') 34  f.close() 35 
36 def main(offset): 37     url = 'https://maoyan.com/board/4?offset=' + str(offset) 38     html = get_one_page(url) 39  # print(html) 40     for item in parse_one_page(html): 41  print(item) 42  write_to_file(item) 43 
44 if __name__ == '__main__': 45     # for i in range(10): 46     #     main(i*10) 47     pool = Pool() 48     pool.map(main,[i*10 for i in range(10)])
spider.py

 

参考:

Python 3网络爬虫开发实战 ,崔庆才著 ,2018.04.pdf