python - Scrapy 正在爬行,但没有输出
问题描述
我正在抓取几页而没有错误,但爬虫没有生成任何输出。该函数parse_article
工作正常(我单独对其进行了测试),但与该parse
函数一起,它不再创建任何输出。有任何想法吗?
我正在通过命令行运行爬虫:scrapy crawl all_articles_from_one_page -o test_file.csv
import scrapy
from scrapping_538.items import Scrapping538Item
from scrapy.loader import ItemLoader
from scrapy.loader.processors import MapCompose
import datetime
import socket
class BasicSpider(scrapy.Spider):
name = 'all_articles_from_one_page'
allowed_domains = ['web']
start_urls = ('http://fivethirtyeight.com/features/',)
def parse(self, response):
# iterate through articles
article_divs = response.xpath('//*[@id="primary"]//div[contains(@id, "post")]')
for article in article_divs:
print('\n**********************************************')
article_link = article.xpath('.//h2/a/@href').extract()[0]
print('------article link: ' + str(article_link))
yield scrapy.Request(article_link, callback=self.parse_article)
def parse_article(self, response):
il = ItemLoader(item=Scrapping538Item(), response=response)
il.add_css('title', 'h1.article-title::text')
il.add_css('date', 'time.datetime::text')
il.add_css('author', '.author::text')
il.add_css('filed_under', '.term::text')
il.add_css('article_text', '.entry-content *::text')
il.add_value('url', response.url)
il.add_value('project', self.settings.get('BOT_NAME'))
il.add_value('spider', self.name)
il.add_value('server', socket.gethostname())
il.add_value('date_import', datetime.datetime.now())
return il.load_item()
解决方案
将您更改allowed_domains
为:
allowed_domains = ['fivethirtyeight.com']
Scrapy 将过滤任何对该属性未列出的域的请求。包括fivethirtyeight.com
它。
(https://docs.scrapy.org/en/latest/topics/spiders.html#scrapy.spiders.Spider.allowed_domains)
allowed_domains
包含允许此蜘蛛抓取的域的可选字符串列表。
OffsiteMiddleware
如果启用,则不会遵循对不属于此列表中指定的域名(或其子域)的 URL 的请求。假设您的目标网址是
https://www.example.com/1.html
,然后添加'example.com'
到列表中。
推荐阅读
- ios - 如何从 TabView 的子视图导航回 SwiftUI 中的 TabView?
- firebase - 如何设置 Firebase Firestore 规则?
- sql - 数据值无故翻倍 SQL
- python - pandas groupby 中的滚动百分比
- r - 如何使用 sin 方程在 R 中形成时间序列?
- amazon-web-services - AWS Cloudwatch 延迟触发 Lambda 函数
- javascript - 我无法使用 document.getElementById 访问 html 元素?
- reactjs - 原型污染——npm 漏洞无法修复?
- python-3.x - 在python中更改图形属性
- javascript - 如何使 div 标签出现并模糊其他所有内容,直到超时或单击 X