scrapy shell http://www.zara.com/us 返回正确的200代码 2017-01-05 18:34:20 [scrapy.utils.log] INFO: Scrapy 1.3.0 started (bot: zara) 2017-01-05 18:34:20 [scrapy.utils.log] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'zara.spiders', 'ROBOTSTXT_OBEY': True, 'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter', 'SPIDER_MODULES': ['zara.spiders'], 'HTTPCACHE_ENABLED': True, 'BOT_NAME': 'zara', 'LOGSTATS_INTERVAL': 0, 'USER_AGENT': 'zara (+http://
以下是关于 scrapy-spider 的编程技术问答
The website does have a hidden authentication token, but the docs 似乎建议我不需要在此处覆盖默认值,只需要传递用户名和密码. > 在"网络"选项卡中查看,我确实注意到,除了发布身份验证令牌外,还有许多cookie.不知道我是否必须在那里做任何事情. 我的代码,从其他人以前的尝试中拼凑出来: The website does have a hidden authentication token, but the [docs][1] seem to suggest I don't need to override the default here, and only need to pass the username and password. 在"网络"选项卡中查看,我确实注意到,除了发布身份验证令牌外,还有许多cookie.不知道我是否必须在那里做任何事情. 我的代码,从其他人以前的尝试中拼凑
我正在使用此url https://www.walmart.ca/en/clothing-shoes-accessories/men/mens/mens/mens-tops/n-2566 +11 我尝试使用URL并在外壳中打开它,但是它有430个错误,因此我在标题中添加了一些设置: scrapy shell -s cookies_enabled = 1 -s user_agent ='mozilla/5.0(x11; ubuntu; ubuntu; linux x86_64; rv:46.0)gecko/gecko/20100101 firefox/firefox/46.0' .男装/n-2566+11 " 它得到了" 200"页面,但是一旦我使用视图(响应),它就将我引向一个页面,说: 对不起! 您的网络浏览器不接受cookie. 这是日志的屏幕截图: 解决方案 您应该有 COOKIES_ENABLED = True 在您的settings.py
我非常新手,我正在使用cookie的网络中处理零食,这对我来说是一个问题,因为我可以在没有cookie的情况下获取数据,但要获得带有cookie的网络数据我. 我有这个代码结构 class mySpider(BaseSpider): name='data' allowed_domains =[] start_urls =["http://...."] def parse(self, response): sel = HtmlXPathSelector(response) items = sel.xpath('//*[@id=..............') vlrs =[] for item in items: myItem['img'] = item.xpath('....').extract() yield myItem 这很好,我可以使用此代码结构获得罚款,而无需cookie 我
我对Python有点陌生,非常新鲜. 我已经设置了一个蜘蛛来爬网并提取所需的所有信息.但是,我需要将.TXT文件传递到start_urls变量. for exmaple: class LinkChecker(BaseSpider): name = 'linkchecker' start_urls = [] #Here I want the list to start crawling a list of urls from a text file a pass via the command line. 我已经做了一些研究,并继续空了.我已经看过此类示例(如何通过用户在废纸蜘蛛中定义了参数),但我认为这对传递文本文件不起作用. 解决方案 使用-a选项运行蜘蛛,例如: scrapy crawl myspider -a filename=text.txt 然后在蜘蛛的__init__方法中读取文件,并定义start_urls: c
根据目标网站是 from scrapy import Spider from scrapy.selector import Selector import scrapy from Stack.items import StackItem from bs4 import BeautifulSoup from scrapy import log from scrapy.utils.response import open_in_browser class StackSpider(Spider): name = "stack" start_urls = [ "http://www.dwarozh.net/sport/", ] def parse(self, response): mItems = Selector(response).xpath('//div[@c
因此,我正在尝试测试一些废话中的某些网页,我的想法是向满足条件的URL提出请求,计算页面上的某些项目的数量,然后在原始条件中返回true/false取决于... 这是一些代码来表明我的意思: def filter_categories: if condition: test = yield Request(url=link, callback = self.test_page, dont_filter=True) return (test, None) def test_page(self, link): ... parse the response... return True/False depending 我试图在请求中传递一项,但是无论返回线在test_page曾经被调用之前触发了什么... 所以我想我的问题会以同步方式将数据传递回Filter_categories方法,以便我可以使用test_pag
我正在用scrapy刮掉列表.我的脚本首先使用parse_node的列表URL解析,然后使用parse_listing解析每个列表,对于每个列表,每个列表使用parse_agent解析列表的代理.我想创建一个数组,它通过列表和代理商而成的剪切解析,并为每个新列表重置. 这是我的解析脚本: def parse_node(self,response,node): yield Request('LISTING LINK',callback=self.parse_listing) def parse_listing(self,response): yield response.xpath('//node[@id="ListingId"]/text()').extract_first() yield response.xpath('//node[@id="ListingTitle"]/text()').extract_first() for agent in str
所以基本上我试图用一组类别抓取一个页面,刮掉每个类别的名称,遵循与每个类别关联的子目表到一个带有一组子类别的页面,刮掉它们的名称,然后遵循每个子类别到他们的关联页面并检索文本数据.最后我想输出格式化的JSON文件有点像: 类别1名称 子类别1名称 来自此子类别的页面 子类别n名称 来自此页面的数据 类别n名称 子类别1名称 来自子类别n的数据 等. 最终我希望能够使用Elasticsearch 使用此数据 我几乎没有谱系的经验,这是我到目前为止的任何经验(只需从第一页刮掉类别名字,我不知道从这里做什么)...从我的研究中我相信我需要使用爬行器,但我不确定需要的内容.我也被建议使用美丽群组.任何帮助都会受到极大的赞赏. class randomSpider(scrapy.Spider): name = "helpme" allowed_domains = ["example.com"] start_urls = ['
蜘蛛供参考: import scrapy from scrapy.spiders import Spider from scrapy.selector import Selector from script.items import ScriptItem class RunSpider(scrapy.Spider): name = "run" allowed_domains = ["stopitrightnow.com"] start_urls = ( 'http://www.stopitrightnow.com/', ) def parse(self, response): for widget in response.xpath('//div[@class="shopthepost-widget"]'):
我有一个scapy pipelines.py,我想收到给定的参数.在我的spider.py它工作完美: class MySpider( CrawlSpider ): def __init__(self, host='', domain_id='', *args, **kwargs): super(MySpider, self).__init__(*args, **kwargs) print user_id ... 现在,我需要我的pipelines.py中的"user_id"以创建像"domain-123.db"这样的sqlite数据库.我在整个网络上搜索了我的问题,但我找不到任何解决方案. 有人可以帮助我吗? ps:是的,我在我的管道类中尝试过super()函数,如spyer.py,它不起作用. 解决方案 在spider构造函数中设置参数: class MySpider(CrawlSpider
我正在遵循本指南,以获取Instagram的数据: mona@pascal:~/computer_vision/instagram/instagram$ ls instagram scrapy.cfg mona@pascal:~/computer_vision/instagram/instagram$ scrapy crawl instagramspider 2017-03-01 15:30:10-0600 [scrapy] INFO: Scrapy 0.14.4 started (bot: instagram) 2017-03-01 15:30:10-0600 [scrapy] DEBUG: Enabled extensions: LogStats, TelnetConsole, CloseSpider, WebService, CoreStats, MemoryUsage, SpiderState Traceback (most recent call last): File
我需要使用“加载更多按钮"来抓取网站.这是我用 Python 编写的蜘蛛代码: import scrapy import json import requests import re from parsel import Selector from scrapy.selector import Selector from scrapy.http import HtmlResponse headers = { 'origin': 'https://www.tayara.tn', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'en-US,en;q=0.9', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.3
我正在尝试使用 Ajax 从站点获取数据.页面加载,然后 Javascript 请求内容.有关详细信息,请参阅此页面:https://www.tele2.no/mobiltelefon.aspx> 问题是,当我尝试通过调用此 url 来模拟此过程时:https://www.tele2.no/Services/Webshop/FilterService.svc/ApplyPhoneFilters 我收到 400 响应,告诉我该请求不被允许.这是我的代码: # -*- coding: utf-8 -*- import scrapy import json class Tele2Spider(scrapy.Spider): name = "tele2" #allowed_domains = ["tele2.no/mobiltelefon.aspx"] start_urls = ( 'https://www.tele2.no/mobiltele
我成功尝试将项目从命令行中导出到CSV文件中,例如: scrapy crawl spiderName -o filename.csv 我的问题是: 在代码中,最简单的解决方案是什么?从另一个文件提取文件名时,我需要这个. 结束场景应该是,我称之为 scrapy crawl spiderName 它将项目写入filename.csv 解决方案 为什么不使用项目管道? writetocsv.py import csv from YOUR_PROJECT_NAME_HERE import settings def write_to_csv(item): writer = csv.writer(open(settings.csv_file_path, 'a'), lineterminator='\n') writer.writerow([item[key] for key in item.keys(
我是 Scrapy 的新用户.在遵循从网站提取数据的教程之后,我正在尝试在论坛上完成类似的事情. 我想要的是提取论坛页面上的所有帖子(开始).然而,这个特定的论坛有一个“cookie wall".所以当我想从 http://forum.fok.nl/topic/2413069 中提取,每个会话我首先需要点击“是的,我接受cookies"-按钮. 我非常基本的刮板目前看起来像这样: class FokSpider(scrapy.Spider): name = 'fok' allowed_domains = ['forum.fok.nl'] start_urls = ['http://forum.fok.nl/'] def parse(self,response): divs = response.xpath("//div").extract() yield {'divs': divs} pass 我得到的 div 不是来自实际的论坛帖子,而是来自
如何根据在线数据测试scrapy spider. 我现在从 this 帖子中得知可以针对 离线 数据. 我的目标是检查我的蜘蛛是否仍然从页面中提取正确的数据,或者页面是否发生了变化.我通过 XPath 提取数据,有时页面接收和更新,我的刮板不再工作.我希望测试尽可能接近我的代码,例如.使用spider和scrapy设置,然后加入parse方法. 解决方案 参考你提供的链接,你可以试试这个方法在线测试,我用的这个方法和你的问题类似.您所要做的就是代替从文件中读取请求,您可以使用 Requests 库为您获取实时网页,并根据您从 Requests 获得的响应组成一个scrapy响应,如下所示 import os import requests from scrapy.http import Response, Request def online_response_from_url (url=None): if not url: url =
我有以下html: SKU: 483151
我能够使用以下方式选择它们: SKU_SELECTOR = '.aaa .bbb .last ::text' sku = response.css(SKU_SELECTOR).extract_first().strip() 我只能获得数字并忽略跨度. 解决方案 您的CSS选择器在::text之前具有不必要的空间. SKU_SELECTOR = '.aaa .bbb .last ::text' ^ 空间表明任何DECENDANT或SEFT的节点都有资格为此选择器,您只想在Self下选择文本. 我使它起作用: >[0]: s = Selector(tex='...') >[1]: s.css('.last::text').extract()