猫眼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 条评论
登录 后参与评论

相关文章

来自专栏有趣的Python和你

记爬虫小分队(六)

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

831
来自专栏抠抠空间

爬虫之UserAgent

1560
来自专栏deepcc

JS判断设备终端(PC,iPad,iPhone,android,winPhone)和浏览器

3758
来自专栏程序员宝库

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

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

3448
来自专栏cs

python文件下载

2858
来自专栏杂七杂八

urllib模拟浏览器登录

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

3305
来自专栏雪胖纸的玩蛇日常

django 分页功能

1815
来自专栏SeanCheney的专栏

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

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

36912
来自专栏张善友的专栏

各种浏览器的userAgent

各浏览器的userAgent很乱,具体可参看cnbeta上文章译稿:UserAgent的历史变迁。 IE   而IE各个版本典型的userAgent如下: ...

2139
来自专栏我爱编程

fake-useragent 伪装爬虫请求头

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

832

扫码关注云+社区