爬虫总结1

您所在的位置:网站首页 python爬取异步加载 爬虫总结1

爬虫总结1

2023-08-04 06:17| 来源: 网络整理| 查看: 265

在爬取到http://icloudy.cechina.cn/网页的时候,发现点击“加载更多”会出现新的内容,但是网页却没有发生变化,于是打开F12查看Network发现,会每次点击都会多出来一行,如下:

随便点开一个就可以看到我们真正访问的URL地址:

从这里我们就可以清楚的在xhr返回的header里面看到异步请求的url,这里我们直接访问该url(或者在preview里面可以看到返回的数据)可以看到返回的数据就是新闻数据,也就是我们要爬的数据。接下来就是进行url格式分析,一般都会有规律可循。具体代码如下:

from pyspider.libs.base_handler import * class Handler(BaseHandler): crawl_config = { } @config(fetch_type="js") @every(minutes=24 * 60) def on_start(self): for i in range(1,8): self.crawl('http://icloudy.cechina.cn/api/LoadArticleHandler.ashx?pageIndex=' + str(i) + '&pageSize=12&siteId=7', callback=self.index_page) @config(fetch_type="js") #代码中加入这行可以解决动态js封装数据的情况 @config(age=10 * 24 * 60 * 60) def index_page(self, response): data = response.text.split(',') url = [] for i in range(1,len(data)): if data[i][:5] == '"Url"': a = 'http://icloudy.cechina.cn' + data[i].split('"')[-2] url.append(a) for i in url: self.crawl(i, callback=self.detail_page) @config(fetch_type="js") @config(priority=2) def detail_page(self, response): if response.doc('#detail3-2').text() == '': neirong = response.doc('.article-content > p').text() else: neirong = response.doc('#detail3-2').text() return { "url": response.url, "title": response.doc('.conDe > h3').text(), "content": neirong, "time": response.doc('.from > span').text().split(' ')[1], "tab": '工业云', }

我这里使用的是通过切片提取出所需要的ID并合并成每篇新闻正确的url地址,这种方法比较简单,也比较繁琐,主要是因为我确实不太熟悉正则表达式,不知道该如何进行匹配。有大佬希望可以提出指正意见!

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3