网页新闻抓取(NikeSierrapython4.1单页面爬虫要找出每个文章块)

优采云 发布时间: 2021-12-26 19:06

  网页新闻抓取(NikeSierrapython4.1单页面爬虫要找出每个文章块)

  0. 背景

  近日,由于耐克的不断努力,Ins再次被各种联名刷屏。. .

  突然,我的假鞋商有了一点想法。

  那么第一步就是要找出最近新鞋在哪里卖,所以我们写一个scrapy爬虫来爬取每日运动鞋新闻。

  1. 需求

  1.1 爬取各种北美新闻网站(目前已添加hypebeast和sneakernews) PS hypebeast有中文站,但与美版新闻不同步。再三考虑。

  1.2 实现自动化。毕竟不是自动的,和网上看有什么区别

  1.3 筛选和清洁新闻。毕竟我这个假经销商,只关心最火最赚钱的。当然好看也很重要,但是写个CNN给鞋子打分还是太费时间了。. (其实也不是没有可能)

  2. 环境

  macOS 塞拉利昂

  蟒蛇3.6

  刮的

  皮查姆

  3. 准备

  启动项目

   scrapy startproject hypebeast_sneaker

  用Pycharm打开项目,像这样:

  

  这样我们就有了一个爬虫。

  4. 正式写代码

  4.1 单页爬虫

  知道我们使用scrapy爬下所有页面是没有用的。我们只需要每篇文章的发布时间、页面浏览量、标题和文章网址。

  我们要做的第一件事就是观察hypebeast的html。. .

  右击页面“检查”

  好在Chrome有鼠标跟随功能(查看窗口左上角的鼠标按钮,这辈子是它给的……)

  

  我们正在寻找的信息在这个块中。

  所以我们只需要在爬虫的解析中使用selector来查找每个文章块:

  articals = selector.xpath('//div[@class="post-box-content-container"]')

  您可以在 Internet 上找到有关如何使用 xpath 的特定教程。很多都写得很全面。

  下一步我们需要处理每篇文章的信息。

  我们用同样的方法找到文章块中各种信息的位置:

  title_div = artical.xpath('div[@class="post-box-content-title"]')

artical_mata = artical.xpath('div[@class="post-box-content-meta"]')

title_text = title_div.xpath('a/@title').extract()[0]

artical_url = title_div.xpath('a/@href').extract()[0]

datetime = artical_mata.xpath('span[@class="time"]/time').extract()[0]

views = artical_mata.xpath('div[@class="post-box-stats"]/hype-count/span[@class="hype-count"]/text()').extract()[0]

  接下来要做的就是输出爬取的数据,我们暂时用scarpy输出到本地的csv文件中。

  打开items.py,将我们想要的数据写入Item Class中:

  

  下一步是添加输出爬取的信息进行解析的代码:

  item['url'] = artical_url

item['title'] = title_text

item['views'] = views

item['time'] = datetime

yield item

  然后在设置中添加输出设置:

  FEED_URI = u"/Users/stev/Desktop/news/test.csv"

FEED_FORMAT = 'CSV'

FEED_EXPORT_ENCODING = 'utf-8'

  记得设置编码,不然会乱码。

  好的,你可以运行它:

  

  只爬了十次就停下了。. . . . . . . . . . . .

  原来网页是动态加载的。. . . . . .

  然后你需要模拟浏览器来找出请求。. . . . . . .

  还好在我绝望的时候,我滑动了hypebeast的页面,查看了它的url:

  https://hypebeast.com/footwear/page/2

  那么你只需要使用多个网址爬虫的方法即可。

  4.2多个网址爬虫

  目前没有其他想法。. . 使用的方法是使用for循环抓取1-4页(每天的feed量大概是2-3页),同时比较昨天存储的最后抓取的url,到了就停止抓取。

  这里我们需要yield和callback

  由于需要多个网址爬虫,这里需要把前面写的解析方法分开。

  并在原解析中写入,新代码:

  for page_num in range(1,5,1):

crawling_url = url + str(page_num)

yield scrapy.Request(crawling_url, callback=self.parse_hype_pages)

  需要注意的是,由于yield和return的机制不同,yield直接生成generator。

  4.另外3个网站

  多站点其实就是在判断不同的 URL 来回调不同的解析器

  

  4.4 Sneakrnews

  然后分析sneakernews网页制作新贴

  PS运动鞋新闻在此页面上有一个购买最热门运动鞋的部分。但是这部分的更新频率太低了(

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线