zoukankan      html  css  js  c++  java
  • Requests+正则表达式爬取猫眼电影

    爬取单页内容

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

    正则表达式分析

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

    保存至文件

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

    开启循环及多进程

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

     

    附上代码:

     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))+'
    ')
    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

  • 相关阅读:
    【BZOJ1396】识别子串
    【BZOJ3309】DZY Loves Math
    【XSY3306】alpha
    整体二分
    常系数齐次线性递推
    【XSY2968】线性代数
    【XSY2892】【GDSOI2018】谁是冠军
    【BZOJ5020】[LOJ2289]【THUWC2017】在美妙的数学王国中畅游
    【XSY2989】字符串
    【XSY2988】取石子
  • 原文地址:https://www.cnblogs.com/YangARTuan/p/10592996.html
Copyright © 2011-2022 走看看