学习笔记:猫眼top100电影信息爬取

学习笔记:猫眼top100电影信息爬取

获取网页源码

用网上随便查的User-agent作为浏览器代理

try:
        headers = {
    
    
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'
        }
        response = requests.get(url, headers=headers)

正则表达式解析

pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'
                         + '.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>'
                         + '.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>', re.S)
  1. 括号用于在re.findall中获取所需信息,注意使用非贪心匹配 .*? 避免匹配过度导致信息缺失。
  2. yield函数:代替return,使得返回的数据更加整齐。

写入文件

json.dumps将字典转换为字符串。(补充:loads将字符串转换为字典)

跨页面爬取

观察到猫眼网站top界面每个页面只有10个电影信息,而翻页Url信息改变如下:

http://maoyan.com/board/4?
翻页->
http://maoyan.com/board/4?offset=10

也就是说,offset每加10控制页面向后跳转一面,利用这一规律进行爬取:

for i in range(10):
        main(offset=i * 10)
        print(str(i*10 + 1) + " to " + str(i*10 +10) + " got!")
        time.sleep(1) #避免访问频次过高导致访问被限

虽然大部分是直接copy书上的实例,但还是满满的成就感!

猜你喜欢

转载自blog.csdn.net/natrick/article/details/114851049