我是scrapy的新手,我让scrapy项目废弃了数据.
我正在尝试从网站上搜索数据,但我收到了错误日志
2016-08-29 14:07:57 [scrapy] INFO: Enabled item pipelines:
[]
2016-08-29 13:55:03 [scrapy] INFO: Spider opened
2016-08-29 13:55:03 [scrapy] INFO: Crawled 0 pages (at 0 pages/min),scraped 0 items (at 0 items/min)
2016-08-29 13:55:04 [scrapy] DEBUG: Crawled (403) <GET http://www.justdial.com/robots.txt> (referer: None)
2016-08-29 13:55:04 [scrapy] DEBUG: Crawled (403) <GET http://www.justdial.com/Mumbai/small-business> (referer: None)
2016-08-29 13:55:04 [scrapy] DEBUG: Ignoring response <403 http://www.justdial.com/Mumbai/small-business>: HTTP status code is not handled or not allowed
2016-08-29 13:55:04 [scrapy] INFO: Closing spider (finished)
Run Code Online (Sandbox Code Playgroud)
我正在尝试按照命令然后在网站控制台然后我得到了响应,但当我在python脚本中使用相同的路径时,我得到了我上面描述的错误.
Web控制台上的命令:
$x('//div[@class="col-sm-5 col-xs-8 store-details sp-detail paddingR0"]/h4/span/a/text()')
$x('//div[@class="col-sm-5 col-xs-8 store-details sp-detail paddingR0"]/p[@class="contact-info"]/span/a/text()')
Run Code Online (Sandbox Code Playgroud)
请帮我.
谢谢
就像评论中提到的Avihoo Mamka一样,您需要提供一些额外的请求标头,以免被该网站拒绝。
在这种情况下,它似乎只是User-Agent标题。默认情况下,scrapy用用户代理标识自己"Scrapy/{version}(+http://scrapy.org)"。一些网站可能出于某种原因而拒绝此操作。
为了避免这种情况,只需使用公共用户代理字符串设置headers您的参数Request:
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0'}
yield Request(url, headers=headers)
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到大量的用户代理,尽管您应该坚持使用流行的Web浏览器,例如Firefox,Chrome等,以获得最佳效果。
您也可以实现它以与您的蜘蛛一起使用start_urls:
class MySpider(scrapy.Spider):
name = "myspider"
start_urls = (
'http://scrapy.org',
)
def start_requests(self):
headers= {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0'}
for url in self.start_urls:
yield Request(url, headers=headers)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5376 次 |
| 最近记录: |