zoukankan      html  css  js  c++  java
  • 猫眼电影北美票房爬虫 Request + 正则 加强训练

    import json
    import re
    from multiprocessing.pool import Pool
    
    import requests
    from requests import RequestException
    
    
    def get_one_page(url):
        try:
            response =requests.get(url)
            # print(response.text)
            if response.status_code==200:
                return response.text
        except RequestException:
            return None
    
    def parse(html):
        '''
        对界面进行解析
        :param html:
        :return:
        '''
        # pattern=re.compile('<dd>.*?board-index.*?>(d+)</i>.*?data-src="(.*?)".*?name"><a .*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?realtime">(.*?)<span>.*?stonefont">(.*?);</span></span>(.*?)</p>.*?office">(.*?)<span>.*?stonefont">(.*?);</span></span>(.*?)</p>',re.S)#正则表达式
        pattern=re.compile('<dd>.*?board-index.*?>(d+)</i>.*?data-src="(.*?)".*?name"><a .*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?realtime">(.*?)<span>',re.S)#正则表达式
        items=re.findall(pattern,html)
        for item in items:
            yield {
                '序号':item[0],
                '图片':item[1],
                '电影名': item[2],
                '主演': item[3].strip()[3:],
                '上映时间': item[4].strip()[5:],
            }
    
    def write_to_file(content):
        '''
        写入文本
        :param content:
        :return:
        '''
        with open('北美票房榜.txt', 'a',encoding='utf-8')as f:#打开文件,如果没有就创建,encoding 指定编码方式
            f.write(json.dumps(content,ensure_ascii=False)+'
    ')#ensure_ascii=False以指定的方式编码
    
    
    def main():
        url='https://maoyan.com/board/2'
        html=get_one_page(url)
        for item in parse(html):
    
            print(item)
            write_to_file(item)
    if __name__ == '__main__':
        main()
        # pool=Pool()#多线程 进程池
        # pool.map(main,[i*10 for i in range (10)])
  • 相关阅读:
    AD 485、422电路
    AD 差分
    思维导图
    68 二叉树的最近公共祖先
    65. 不用加减乘除做加法
    64. 求1+2+…+n
    10- I. 斐波那契数列
    11&12. 旋转数组的最小数字
    12. 矩阵中的路径
    13. 机器人的运动范围
  • 原文地址:https://www.cnblogs.com/liangliangzz/p/10252778.html
Copyright © 2011-2022 走看看