Datawhale爬虫(第5期)入门第二练||豆瓣电影TOP250的内容
2019-03-01 23:46
253 查看
python正则表达式:
正则表达式是一个特殊的字符串序列,可以方便的检测字符串是否与某种模式匹配!
1. re.match() 函数
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回None语法:
re.match(pattern, string, falgs=0)
示例:
import re print(re.match('www', 'www.xiaomi.com').span()) # 在起始位置匹配 print(re.match('com', 'www.xiaomi.com')) # 不在起始位置匹配
2. re.search() 函数
re.search 扫描整个字符串,并返回第一个成功匹配的值语法:
re.search(pattern, string, falgs=0)
示例:
import re print(re.match('www', 'www.xiaomi.com').span()) # 在起始位置匹配 print(re.match('com', 'www.xiaomi.com').span()) # 不在起始位置匹配
学习任务:结合requests、re两者的内容爬取豆瓣电影 Top 250里的内容:要求抓取名次、影片名称、国家、导演等字段。
思路分析:首先找到豆瓣top250的网址:https://movie.douban.com/top250通过手动翻页浏览,发现如下规律:
https://movie.douban.com/top250?start=0&filter= # 第一页内容 https://movie.douban.com/top250 # 第一页这个也可以 https://movie.douban.com/top250?start=25&filter= # 第二页内容 https://movie.douban.com/top250?start=50&filter= # 第三页内容 https://movie.douban.com/top250?start=75&filter= # 第四页内容因此我们只需要更改
start=后面的数字即可构造出10页的网址 因为我们 只要 名次、影片名称、国家、导演等字段,因为详细页的信息更丰富,本次爬虫在详细页中进行,因此先需要爬取进入详细页的网址链接,进而爬取数据
爬虫代码如下:
import requests from lxml import etree import re import time headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/71.0.3578.98 Safari/537.36' # 加入请求头 } def get_movie_url(url): """ 获取详细页URL的函数 :param url: :return: """ html = requests.get(url, headers=headers) selector = etree.HTML(html.text) movie_hrefs = selector.xpath('//div[@class="hd"]/a/@href') for movie_href in movie_hrefs: get_movie_info(movie_href) def get_movie_info(url): """ 获取详细页信息的函数 :param url: :return: """ html = requests.get(url, headers=headers) selector = etree.HTML(html.text) try: ranking = selector.xpath('//*[@id="content"]/div[1]/span[1]/text()')[0] # 排名 name = selector.xpath('//*[@id="content"]/h1/span[1]/text()')[0] # 电影名称 country = re.findall('<span class="pl">制片国家/地区:</span>(.*?)<br/>', html.text, re.S)[0] # 国家 actor = selector.xpath('//*[@id="info"]/span[1]/span[2]/a/text()')[0] # 导演 print(ranking + ' ' + name + ' ' + country + ' ' + ' ' + actor) except IndexError: pass if __name__ == '__main__': urls = ['https://movie.douban.com/top250?start=%s&filter=' % i for i in range(0, 250, 25)] for url in urls: get_movie_url(url) time.sleep(3)
抓取到的数据在控制台打印出来的结果:
一共250条数据
第二天的学习任务就到这里了,记录每一天认真的自己,坚持输出,共勉!
相关文章推荐
- Python爬虫入门——2. 4 利用正则表达式爬取豆瓣电影 Top 250
- [python爬虫入门]爬取豆瓣电影排行榜top250
- python3[爬虫基础入门实战] 爬取豆瓣电影排行top250
- scrapy入门实战练习(一)----爬取豆瓣电影top250
- 小试牛刀--利用豆瓣API爬取豆瓣电影top250
- 笔记:Scrapy 爬取豆瓣电影Top250
- scrapy ------ 爬取豆瓣电影TOP250
- Python爬虫一:抓取豆瓣电影Top250
- scrapy1.3爬取豆瓣电影top250
- 实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
- Python爬取豆瓣电影top250
- (7)Python爬虫——爬取豆瓣电影Top250
- 微信小程序极简入门(三)--豆瓣电影小程序实现页首splash和内容横向滑动
- 爬虫框架scrapy,爬取豆瓣电影top250
- 运维学python之爬虫高级篇(五)scrapy爬取豆瓣电影TOP250
- 1.【python爬虫学习笔记】爬取豆瓣电影top250
- [Python/爬虫]利用xpath爬取豆瓣电影top250
- Python爬虫——豆瓣电影Top250
- nodejs爬取豆瓣top250电影信息
- Scrapy框架学习 - 爬取豆瓣电影排行榜TOP250所有电影信息并保存到MongoDB数据库中