java爬虫抓取动态网页(java爬虫抓取动态网页常见问题解决方案(一)_)
优采云 发布时间: 2022-03-15 14:05java爬虫抓取动态网页(java爬虫抓取动态网页常见问题解决方案(一)_)
java爬虫抓取动态网页,都是基于scrapy等python框架的。用scrapy在百度、快手等平台抓取中,常见的错误是scrapy抓取不到所要的数据,这是什么原因呢?我们针对这个问题分析一下,再给大家一些建议。
一、问题分析
1、爬取过程中发现某些页面不能获取数据,采用requests要么无法获取,要么请求超时,或者返回乱码。我们采用mongodb数据库存储这些数据,可问题是,
2、抓取到的数据,部分数据是乱码,我们分析数据库,发现数据并不在scrapy框架,
3、没办法写入到mongodb数据库里,
4、有的爬取网站,则是抓取后直接返回数据库,有的爬取网站,需要定时读取下一页的数据,然后还要手动写入mongodb,这个地方和数据库同步,一旦采用这个方式,
1)我们使用正则表达式抓取需要抓取的页面;
2)我们定时扫描服务器的url,然后对需要抓取的页面写入数据库;正则表达式如下:defselect(self,request):assert(request.url.split("/")[1])assert(request.url.split("/")[1].replace(".","."))assert(request.url.split("/")[1].replace("/","."))assert(request.url.split("/")[1].replace("/","."))assert(request.url.split("/")[1].replace("/","."))assert(request.url.split("/")[1].replace(".","."))参考:查正则表达式获取百度信息常见问题解决方案:深入解析正则表达式、pythonparse_requests源码剖析。
-jiehaoqian_博客园
2、爬取失败原因是json格式数据,提取过程,更多涉及了自己解析和传递json对象、拼接字符串、切割json字符串、正则表达式匹配。那么scrapy框架解析json数据,是怎么通过反向工程,从服务器获取数据文件?解决方案:解析json数据,接收源码,解析json文件;解析过程,接收源码,解析json文件;。
3、爬取app_timestamp、temp_timestamp、history_timestamp的中间值?前两者取值不同,为什么结果是不同的呢?因为temp_timestamp比history_timestamp大3.4m,网站服务器限制大小。
解决方案:
1、针对爬取过程,默认使用history_timestamp,当有大量json时,对存量数据也是一个巨大的浪费,可以封装一个循环存储,大存储数据时,