- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 python 中编写了一个脚本,使用 scrapy 从网站收集不同帖子的名称及其链接。当我从命令行执行我的脚本时,它可以完美运行。现在,我的意图是使用 CrawlerProcess()
运行脚本.我在不同的地方寻找类似的问题,但我找不到任何直接的解决方案或任何更接近的解决方案。但是,当我尝试按原样运行它时,出现以下错误:
from stackoverflow.items import StackoverflowItem ModuleNotFoundError: No module named 'stackoverflow'
stackoverflowspider.py
):
from scrapy.crawler import CrawlerProcess
from stackoverflow.items import StackoverflowItem
from scrapy import Selector
import scrapy
class stackoverflowspider(scrapy.Spider):
name = 'stackoverflow'
start_urls = ['https://stackoverflow.com/questions/tagged/web-scraping']
def parse(self,response):
sel = Selector(response)
items = []
for link in sel.xpath("//*[@class='question-hyperlink']"):
item = StackoverflowItem()
item['name'] = link.xpath('.//text()').extract_first()
item['url'] = link.xpath('.//@href').extract_first()
items.append(item)
return items
if __name__ == "__main__":
c = CrawlerProcess({
'USER_AGENT': 'Mozilla/5.0',
})
c.crawl(stackoverflowspider)
c.start()
items.py
包括:
import scrapy
class StackoverflowItem(scrapy.Item):
name = scrapy.Field()
url = scrapy.Field()
I know I can bring up success this way but I am only interested to accomplish the task with the way I tried above:
def parse(self,response):
for link in sel.xpath("//*[@class='question-hyperlink']"):
name = link.xpath('.//text()').extract_first()
url = link.xpath('.//@href').extract_first()
yield {"Name":name,"Link":url}
最佳答案
尽管@Dan-Dev 向我展示了正确方向的方法,但我决定提供一个完美无瑕的完整解决方案。
除了我在下面粘贴的内容之外,什么都没有改变:
import sys
#The following line (which leads to the folder containing "scrapy.cfg") fixed the problem
sys.path.append(r'C:\Users\WCS\Desktop\stackoverflow')
from scrapy.crawler import CrawlerProcess
from stackoverflow.items import StackoverflowItem
from scrapy import Selector
import scrapy
class stackoverflowspider(scrapy.Spider):
name = 'stackoverflow'
start_urls = ['https://stackoverflow.com/questions/tagged/web-scraping']
def parse(self,response):
sel = Selector(response)
items = []
for link in sel.xpath("//*[@class='question-hyperlink']"):
item = StackoverflowItem()
item['name'] = link.xpath('.//text()').extract_first()
item['url'] = link.xpath('.//@href').extract_first()
items.append(item)
return items
if __name__ == "__main__":
c = CrawlerProcess({
'USER_AGENT': 'Mozilla/5.0',
})
c.crawl(stackoverflowspider)
c.start()
再一次,在脚本中包含以下内容修复了问题
import sys
#The following line (which leads to the folder containing "scrapy.cfg") fixed the problem
sys.path.append(r'C:\Users\WCS\Desktop\stackoverflow')
关于python - Scrapy 使用 crawlerprocess 运行时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53033791/
场景: 具有多个蜘蛛的单个 scrapy 项目。 所有蜘蛛从脚本一起运行。 问题: 同一 namespace 中的所有日志消息。不可能知道哪个消息属于哪个蜘蛛。 在 scrapy 0.24 中,我在一
Scrapy 1.x documentation解释了有两种方法可以从脚本中运行 Scrapy 蜘蛛: 使用 CrawlerProcess 使用 CrawlerRunner 两者有什么区别?什么时候用
我在 python 中编写了一个脚本,使用 scrapy 从网站收集不同帖子的名称及其链接。当我从命令行执行我的脚本时,它可以完美运行。现在,我的意图是使用 CrawlerProcess() 运行脚本
将执行以下代码,创建没有错误的文件。但是,它没有保存到 json 文件中。 我关闭了 autothrottle,它在过去会干扰下载数据,但并没有解决问题。 Scrapy==1.4.0 class My
我有两个 CrawlerProcesses,每个都调用不同的蜘蛛。我想将自定义设置传递给这些进程之一以将蜘蛛的输出保存到 csv,我想我可以这样做: storage_settings = {'FEED
我有一些看起来像这样的代码: def run(spider_name, settings): runner = CrawlerProcess(settings) runner.craw
我正在从另一个脚本运行 scrapy 蜘蛛,我需要从 Crawler 检索并保存到变量统计信息。我查看了文档和其他 StackOverflow 问题,但未能解决此问题。 这是我运行爬行的脚本: imp
我正在尝试通过脚本以编程方式调用蜘蛛。我无法使用 CrawlerProcess 通过构造函数覆盖设置。让我用默认的爬虫来说明这一点,它用于从官方 scrapy 站点(最后一个代码片段在 officia
我想使用 scrapy-splash 来获取目标页面的 html 和屏幕截图 png。我需要能够以编程方式调用它。根据spashy doc ,指定 endpoint='render.json' 并传递
我是一名优秀的程序员,十分优秀!