Scrapy框架抓取豆瓣电影的小爬虫学习日记(二)
来源:互联网 发布:mac的发布时间 编辑:程序博客网 时间:2024/04/28 10:58
爬虫模块创建完成后,仅仅拥有了网页下载功能,接下来就需要进行网页数据的提取。
Scrapy有自己的一套数据提取机制,叫做选择器(selector),是通过特定的XPath或者CSS表达式来选择HTML文件中的某个部分。不过我之前主要使用的是BeautifulSoup包来解析网页,所以这里还继续用了BeautifulSoup,感兴趣的同学可以去找文章看看XPath的方法。
页面数据的提取还是在parse方法中完成,首先我们看一下豆瓣电影网页的html文件,https://movie.douban.com/。发现主页有正在热映电影的简要介绍,而如果想得到比较多的影片信息的介绍,则需要打开每一个具体的影片页面,获得更多的信息。这里发现主页会有URL地址,在a标签下,onclick="moreurl(this,{from:'mv_a_tl'})"中。
首先获取页面,然后用BeautifulSoup方法解析页面。通过find_all找到页面中含有电影URL的标签,并get到“href”属性,就得到了具体一部电影的URL地址,然后加入到full_urls中。然后再从full_urls中取出地址,打开每部影片,从里面获取到标题,年份,导演,主演等详细的影片资料。
具体代码如下:
def parse(self,response): data = response.body soup = BeautifulSoup(data,'lxml') for url_list in soup.find_all(onclick="moreurl(this, {from:'mv_a_tl'})"): url = url_list.get('href') full_urls.append(url) for a in full_urls: page = urllib.request.urlopen(a) opp = BeautifulSoup(page,'lxml') # 获取标题 title = opp.find(property="v:itemreviewed").string year = opp.find(class_='year').string pl = opp.find(id="info") # 获取导演 directer = [] for a in pl.find_all(rel="v:directedBy"): t = a.string directer.append(t) # 获取编剧信息 a = pl.find_all(class_='attrs') global scenarist if len(a)<2:#判断列表里面是否有第2条的编剧信息 print(None) else: b = a[1] dr = re.compile("<[^>]*?>|\[|\]",re.S) dd = dr.sub('',str(b)) scenarist = [] scenarist = dd.split('/') # 字符串转成数组 # 获取演员信息 actor = [] a = pl.find(class_='actor') if a == None: print(None) else: for b in a.find_all('a'): t = b.string actor.append(t) # 获取地区 dr = re.compile("<[^>]*?>|\[|\]",re.S) area_pattern = re.compile("(?<=制片国家/地区:)[\w\W]*?(?=<br/>)",re.S) a = area_pattern.search(str(pl)) if a == None: print('无') else: a = a.group(0) b = re.sub('\s', '', dr.sub('', a)) area = [] area = b.split('/')
里面有几个要注意的地方:
1、由于有些资料会存在空缺,所以要判断是否有内容,否则会返回“NoneType”,导致报错。
2、有些资料会有多条,所以用数组的方式进行保存。
3、一些需要用正则表达式进行判断提取,然后再进行去标签处理。
阅读全文
0 0
- Scrapy框架抓取豆瓣电影的小爬虫学习日记(二)
- Scrapy框架抓取豆瓣电影的小爬虫学习日记(一)
- Scrapy框架抓取豆瓣电影的小爬虫学习日记(三)
- 爬虫学习(三) Scrapy框架入门与豆瓣电影爬虫
- Scrapy爬虫入门系列4抓取豆瓣Top250电影数据
- scrapy抓取豆瓣电影TOP250
- Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)
- Python 采用Scrapy爬虫框架爬取豆瓣电影top250
- 爬虫框架scrapy,爬取豆瓣电影top250
- java jsoup 网络爬虫 学习例子(二) 只抓取豆瓣电影5星(力荐)电影名称
- 使用scrapy、selenium、phantojs抓取豆瓣热门电影的spider
- python 爬虫学习三(Scrapy 实战,豆瓣爬取电影信息)
- 爬虫学习(四)mongoDB与Scrapy---优化豆瓣电影实例
- 入门级爬虫 抓取豆瓣top250 的电影信息
- Python爬虫抓取框架:Scrapy的架构
- Python爬虫,用于抓取豆瓣电影Top前100的电影的名称
- 用Scrapy抓取豆瓣小组数据(二)
- 用Scrapy抓取豆瓣小组数据(二)
- 十六进制字符串转化为十进制数值
- 转:Oracle group by 用法实例详解
- SVM一些问题及思考
- vue饿了么学习-第十一篇(弹出层样式)
- 类的成员变量、成员方法、权限修饰符、局部变量等
- Scrapy框架抓取豆瓣电影的小爬虫学习日记(二)
- docker logs 查看实时日志
- HDU
- RabbitMQ基础概念详细介绍
- 自动生成编译时间,可以实现版本管理
- Windows快捷键大全
- HDOJ 3342 Legal or Not(拓扑排序)队列做法和DFS做法
- Linux下的文件查找指令
- 北大青鸟第二期 第三章SQL编程 使用变量和if-else