- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
这篇文章主要分两部分来聊,第一部分讲数据的抓取,第二部分对电影数据进行一些简单的分析。好,我们这就进入正题...
第一章:获取豆瓣电影信息
1.构造链接
我们在豆瓣电影分类标签下,根据电影类型的不同来构造链接,获得爬取的初始链接入口。初始的入口链接构造好了,如何把全部电影信息的链接都获取到呢?这里一般有两种方式,对于动态加载页面内容的网页,我们需要根据URL的规律构造地址,当然这也是稍复杂的一种方式。另一种方式就是在页面中找到下一页地址,这次的爬取比较简单,直接在页面中获取下页地址即可。
这里我通过一个theme_page的类,获取所有主题下的全部链接地址:
# coding=utf-8
# usr/bin/eny python
importurllib.request
importrequests
fromlxmlimportetree
importtime
获取每个主题下有多少页内容 (没有输入,输出字典)
classtheme_page(object):
def__init__(self):
self.tags=[u爱情,u喜剧,u动画,u剧情,u科幻,u动作,u经典,u悬疑,u青春,u犯罪,u惊悚,
u文艺,u搞笑,u纪录片,u励志,u恐怖,u战争,u短片,u黑色幽默,u魔幻,u传记,
u情色,u感人,u暴力,u动画短片,u家庭,u音乐,u童年,u浪漫,u黑帮,u女性,
u同志,u史诗,u童话,u烂片,ucult]
defget_total_num(self):
tags=self.tags
total_num=[]
list=[]
fortagintags:
# print(tag) #主题名称
re_url=/tag/{}?start=0type=T.format(urllib.request.quote(tag))
# print(re_url) # 主题链接
s=requests.get(re_url)
contents=s.content.decode(utf-8)
selector=etree.HTML(contents)
num=selector.xpath(//*[@id=content]/div/div[1]/div[3]/a[10]/text())
total_num.append(int(num[0]))
# print(num[0]) # 总页数
list.append({# list :{爱情: 393}, {喜剧: 392}, {动画: 274},
主题:tag,
总页数:num[0]
})
returnlist
2.信息抽取
这块的工作也比较常规,由于豆瓣电影信息的页面不是动态加载,给抓取数据的工作减小了很大难度,使用lxml工具先抓到列表页中的电影简介信息和链接,然后进入到每部电影的链接里抓取详情信息。
抓取列表页信息:
tag=urllib.request.quote(u爱情)
url_1=/tag/{}?start=0type=T.format(tag)
classdouban(object):
def__init__(self,*args,**kwargs):
self.conn=pymysql.connect(host=localhost,port=3306,user=root,password=,db=douban,charset=utf8)
self.cursor=self.conn.cursor()
self.sql_info=INSERT IGNORE INTO `douban_mov` VALUES(%s,%s,%s,%s,%s,%s)
defsearch(self,content):
爬取页面内电影信息
try:
selector=etree.HTML(content)
textslist=selector.xpath(//div[contains(@class,grid-16-8 clearfix)]/div[1]/div[2]/table)
exceptExceptionase:
print(e)
try:
fortextintextslist:
lists=[]
title=text.xpath(tr/td[2]/div/a/text())
score=text.xpath(tr/td[2]/div/div/span[2]/text())
num=text.xpath(tr/td[2]/div/div/span[3]/text())
link=text.xpath(tr/td/a/@href)
content=text.xpath(tr/td[2]/div/p/text())
iftitle:
title=title[0].strip().replace
文档评论(0)