
爬虫程序的url是你想要页面的初始页面,可能你想要的页面不止一页,就像用百度搜索一个关键词,第一次打开结果页面的地址与你先点下一页然后再点上一页之后出现的地址模式是不同的,这是网站后台内部实现的,具体过程不太了解
对于只是读取某几个网站更新内容的爬虫完全没必要在python代码中实现增量的功能,直接在item中增加Url字段。
item['Url'] = responseurl
然后在数据端把储存url的column设置成unique。
之后在python代码中捕获数据库commit时返回的异常,忽略掉或者转入log中都可以。
网上有说支持增量的,我看了代码+实际测试,还是觉得不是增量的
我的做法是pipeline的open_spider时读取所有item里面的url,做成一个parsed_urls的list,在rule的process_link中过滤掉这些已经下载的url,如果需要的话可以再item里面加入last_notify属性进一步扩展
import javaioBufferedReader;
import javaioIOException;
import javaioInputStreamReader;
import javanetMalformedURLException;
import javanetURL;
import javautilArrayList;
import javautilList;
public class GetLinks {
private String webSource;
private String url;
public GetLinks(String url) throws MalformedURLException, IOException {
thisurl = Complete(url);
webSource = getWebCon(thisurl);
}
private String getWebCon(String strURL) throws MalformedURLException,
IOException {
StringBuffer sb = new StringBuffer();
javanetURL url = new javanetURL(strURL);
BufferedReader in = new BufferedReader(new InputStreamReader(url
openStream()));
String line;
while ((line = inreadLine()) != null) {
sbappend(line);
}
inclose();
return sbtoString();
}
private String Complete(String link)throws MalformedURLException{
URL url1 = new URL(link);
URL url2 = new URL(link+"/");
String handledUrl = link;
try{
StringBuffer sb1 = new StringBuffer();
BufferedReader in1 = new BufferedReader(new InputStreamReader(url1
openStream()));
String line1;
while ((line1 = in1readLine()) != null) {
sb1append(line1);
}
in1close();
StringBuffer sb2 = new StringBuffer();
BufferedReader in2 = new BufferedReader(new InputStreamReader(url2
openStream()));
String line2;
while ((line2 = in2readLine()) != null) {
sb2append(line2);
}
in1close();
if(sb1toString()equals(sb2toString())){
handledUrl = link+"/";
}
}catch(Exception e){
handledUrl = link;
}
return handledUrl;
}
/
处理链接的相对路径
@param link 相对路径或绝对路径
@return 绝对路径
/
private String urlHandler(String link) {
if (link == null)
return null;
link = linktrim();
if (linktoLowerCase()startsWith(">
以上就是关于为什么爬虫程序抓取同一个页面的url和view source看到的url不同全部的内容,包括:为什么爬虫程序抓取同一个页面的url和view source看到的url不同、python点击访问下一篇并爬取直到最后一页、java提取网站内部所有URL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)