首页 > 解决方案 > 添加代理后,Scrapy 代码不再有效

问题描述

我正在尝试像这样抓取专利: https ://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&u=%2Fnetahtml%2FPTO%2Fsearch-adv.htm&r=1&f=G&l=50&d=PTXT&p =1&S1=7844625.PN.&OS=pn/7844625&RS=PN/7844625

在为这种类型的专利写了一个刮板并在一个小样本上尝试之后,除了被阻塞之外,一切都很好。因此,我通过 Bright Data 添加了一个代理,并尝试再次运行它,但我的选择器不再起作用。我在添加代理之前工作的代码出现错误,例如这个:

    patent['number'] = response.xpath('//html/body/table[2]/tr/td[2]/b//text()').getall()[0].replace(',', '')
    patent['date'] = cleaned(response.xpath('//html/body/table[2]/tr/td[2]/b//text()').getall()[1])

发现:

  1. 正如我使用 PyCharm 的调试工具观察到的那样,该页面似乎发生了变化。'\n' 字符似乎无处不在,或者它们被移动了。可以看到大小写有区别:没有代理:response capitalized

在这里看到这些:

顶部:带代理;底部:无代理

  1. 我还观察到字节数有一些差异:使用代理,响应为 41059 字节,不使用代理,响应为 40353 字节

关于如何使刮板在代理给出的响应内容上工作的任何想法?非常感谢。

标签: pythonweb-scrapingproxyscrapyresponse

解决方案


您使用的是哪种网络类型?来自数据中心的 ASN 似乎被阻止了,您是否尝试过使用住宅代理?

在我的测试数据中心是不成功的,而一些住宅是成功的。


推荐阅读