《初涉爬虫》

来源:互联网 发布:淘宝实名认证怎么弄 编辑:程序博客网 时间:2024/06/05 05:18

今天刚看了崔老师的教程,模仿一下《爬取猫眼电影榜前100》。

开始,最简单的requests库请求网页,这个没毛病。没想到居然遇到了教程上没有的问题。禁止访问。


我知道爬虫爬取网页的时候会出现这种情况。知识没想到,就这样出现了。机智的我回忆了一下,好像可以试一下添加headers。

import requestsdef get_web(url):    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \        AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}    response = requests.get(url, headers=headers)    return response.text

哈哈,居然成了!


继续。得到这个网页之后,下面用正则表达式来解析这段html代码,得到我们想要的,电影名,排行,评分等等。

就拿第一个霸王别姬举例。


我们要的信息就在红框部分。下面用正则表达式去匹配我们想要的。

'<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?"star">\(.*?)</p>.*?"releasetime">(.*?)</p>.*?"integer">(.*?)</i>.*?"fraction">(\d+)</i>.*?</dd>'

括号里面的就想当时红框里面想要的信息。然后用正则表达式来解析。

def compile(html):    pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?"star">\(.*?)</p>.*?"releasetime">(.*?)</p>.*?"integer">(.*?)</i>.*?"fraction">(\d+)</i>.*?</dd>', re.S)    items = re.findall(pattern, html)    return items
得到了这些东西。就代表可以了。


然后给它整理一下输出。


这里输出的顺序和我设置的不一样,原教程里面使用了yield生成器,我现在不是很懂,估计和这个有关吧。最后就是一页一页的爬取,传入下一个网址就可以了。我还是比较菜,要多多联系,特别是写这个正则表达式,很不自信。(为啥我的截图的都挂了T_T)

原创粉丝点击