手把手教你用Scrapy爬虫框架爬取食品论坛数据并存入数据库.docxVIP

手把手教你用Scrapy爬虫框架爬取食品论坛数据并存入数据库.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
手把手教你用Scrapy爬虫框架爬取食品论坛数据并存入数据库 网络爬虫(又称为网页蜘蛛,网络机器人),是一种依据肯定的规章,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模仿程序或者蠕虫。百度百科 ????说人话就是,爬虫是用来海量规章化猎取数据,然后进行处理和运用,在大数据、金融、机器学习等等方面都是必需的支撑条件之一。 ????目前在一线城市中,爬虫的岗位薪资待遇都是比较客观的,之后提升到中、高级爬虫工程师,数据分析师、大数据开发岗位等,都是很好的过渡。 二、项目目标 ????本此引见的项目其实不用想的太过简单,最终要实现的目标也就是将帖子的每条评论爬取到数据库中,并且做到可以更新数据,防止反复爬取,反爬等措施。 三、项目预备 这部分次要是引见本文需要用到的工具,涉及的库,网页等信息等 软件:PyCharm 需要的库:Scrapy, selenium, pymongo, user_agent,datetime 目标网站: 插件:chromedriver(版本要对) 四、项目分析 1、确定爬取网站的结构 ????简而言之:确定网站的加载方式,怎样才能正确的一级一级的进入到帖子中抓取数据,使用什么格式保存数据等。 ????其次,观看网站的层级结构,也就是说,怎样依据板块,一点点进入到帖子页面中,这对本次爬虫任务格外重要,也是次要编写代码的部分。 2、如何选择合适的方式爬取数据? ????目前我晓得的爬虫方法或许有如下(不全,但是比较常用): ????1)request框架:运用这个http库可以很机警的爬取需要的数据,简约但是过程略微繁琐,并且可以协作抓包工具对数据进行猎取。但是需要确定headers头以及相应的恳求参数,否则无法猎取数据;很多app爬取、图片视频爬取随爬随停,比较轻量机警,并且高并发与分布式部署也格外机警,对于功能可以更好实现。 ????2)scrapy框架:scrapy框架可以说是爬虫最常用,最好用的爬虫框架了,优点很多:scrapy 是异步的;实行可读性更强的 xpath 代替正则;强大的统计和 log 系统;同时在不同的 url 上爬行;支持 shell 方式,便利独立调试;支持写 middleware便利写一些统一的过滤器;可以通过管道的方式存入数据库等等。这也是本次文章所要引见的框架(结合selenium库)。 五、项目实现 1、第一步:确定网站类型 ????首先解释一下是什么意思,看什么网站,首先要看网站的加载方式,是静态加载,还是动态加载(js加载),还是别的方式;依据不一样的加载方式需要不同的方法应对。然后我们观看今日爬取的网站,发觉这是一个有年月感的论坛,首先猜想是静态加载的网站;我们开启组织 js 加载的插件,如下图所示。 ????刷新之后发觉的确是静态网站(假如可以正常加载基本都是静态加载的)。 2、其次步:确定层级关系 ????其次,我们今日要爬取的网站是食品论坛网站,是静态加载的网站,在之前分析的时候已经了解了,然后是层级结构: ? ????或许是上面的流程,总共有三级递进访问,之后到达帖子页面,如下图所示。 部分代码呈现: ????一级界面: def parse(self, response): (已进入网页!) (正在猎取版块列表!) column_path_list = response.css(#ct div.mn div:nth-child(2) div)[:-1] for column_path in column_path_list: col_paths = column_path.css(div table tbody tr td div a).xpath(@href).extract() for path in col_paths: block_url = response.urljoin(path) yield scrapy.Request( url=block_url, callback=self.get_next_path, ) ????二级界面: def get_next_path(self, response): (已进入版块!) (正在猎取文章列表!) if response.url == /know/: pass else: try: nums = response.css(#fd_page_bottom div

文档评论(0)

liuxiyuliuxingyu + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档