猫眼Top100

import json
from multiprocessing import Pool
import requests
import re
from requests.exceptions import RequestException

headers = {
    'Host': 'maoyan.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36'
}

def get_one_page(url):
    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],  # url
            '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('猫眼TOP100.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)
    html = get_one_page(url)
    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)])
    for i in range(10):
        main(i*10)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏cs

python文件下载

30180
来自专栏林德熙的博客

win10 uwp 如何让WebView标识win10手机

本文主要:如何让WebView访问的网页识别为手机. 当然这句话我说不好,换个,如何让 WebView 识别为手机。 上面两句话都是错的,因为是服务器识别,不是...

9820
来自专栏杂七杂八

urllib模拟浏览器登录

使用build_opener()修改报头 由于urlopen()不支持一些HTTP的高级功能,所以,我们如果要修改报头,可以使用urllib.request.b...

35050
来自专栏SeanCheney的专栏

Scrapy随机切换用户代理User-Agent

使用fake-useragent: https://github.com/hellysmile/fake-useragent 这是一个可以随机切换访问头的插...

440120
来自专栏iOS技术

iOS 触摸事件响应链

本文讨论iOS事件中的触摸事件及其响应链,至于加速计事件和远程控制事件不在本文的讨论范畴。

45270
来自专栏有趣的Python和你

记爬虫小分队(六)

他是同find方法,找的div的class标签,对于这个问题,我们可以换个思路,这个定位找不到,就往上找,我的代码:

9010
来自专栏抠抠空间

爬虫之UserAgent

18400
来自专栏应兆康的专栏

Python使用本地shadowsocks代理

1.3K10
来自专栏我爱编程

fake-useragent 伪装爬虫请求头

在很多爬虫中请求头是必不可少的,而使用 fake-useragent 这个库则可以让我们非常方便得伪装请求头。

17020
来自专栏程序员宝库

为什么浏览器的用户代理字符串以 Mozilla 开头?

为什么浏览器的用户代理字符串(user-agent string)以 Mozilla 开头? ? 最早流行的浏览器是 NCSA Mosaic,它称自己为 NCS...

35680

扫码关注云+社区

领取腾讯云代金券