zoukankan      html  css  js  c++  java
  • 静觅爬虫学习笔记8-爬取猫眼电影

      不知道是不是我学习太晚的原因,猫眼电影这网站我用requests进行爬取源码直接返回给我一个您的访问被禁止。作为萌新的我登时就傻了,还好认真听了之前的课,直接换selenium抓了源码,虽然效率惨不忍睹,但多少也能运行了,下面上代码

    import json
    import requests
    import re
    from requests.exceptions import RequestException
    from multiprocessing import Pool
    from selenium import webdriver
    
    
    def get_one_page(url):                  # 获取网页源码
        browser = webdriver.Chrome()
        try:
            browser.get(url)
            return browser.page_source
        finally:
            browser.close()
    
    
    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]
            }
    
    
    def write_to_file(content):                 # 写入文件
        with open('result.txt','a',encoding='utf-8') as f:
            f.write(json.dumps(content,ensure_ascii=False) + '
    ')
            f.close()
    
    
    def main(offset):
        url="http://maoyan.com/board/4?offset=" + str(offset)
        html = get_one_page(url)
        for item in parse_one_page(html):
            print(item)
            write_to_file(item)
    
    
    if __name__ == '__main__':
        for i in range(10):
            main(i*10)
        #多线程写法,实测不是很好用,因为同时打开多个网页,抓取结果容易乱序
        """
        pool = Pool()
        pool.map(main,[i*10 for i in range(10)])
        """

    多线程那块这写法不太好用....

    而且有的时候爬取的数据不足100个,会漏掉1到2个,而且每次漏掉的还是不同的数据,萌新求教这是为何

  • 相关阅读:
    Nubiers to follow
    pp to write
    Reading source code
    build opencv with python support
    add monitor resolution
    Install cv2.so for Anaconda
    axios 上传下载显示进度
    vant 上传图片 图片回显 是base64
    多个时间段 合并
    热部署
  • 原文地址:https://www.cnblogs.com/xinzhiyan/p/7977135.html
Copyright © 2011-2022 走看看