我正在尝试从我从“主页”中提取的提取链接中获取文本
这个爬虫应该从“主页”获取所有链接,然后爬行所有这些链接并从中获取文本。
我希望你明白我的意思,如果不问我,我会尝试更详细地解释
编辑:
所以我阅读了更多关于 scrapy 的内容,并找到了此页面 https://scrapy.readthedocs.org/en/latest/topics/spiders.html?highlight=crawlspider#crawling-rules 我读了“SitemapSpider”,我想这可能是我需要用于解决此问题的蜘蛛
蜘蛛文件 *已编辑*
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from craigslist_randstad.items import CraigslistRandstadItem
class MySpider(BaseSpider):
name = "craig"
allowed_domains = ["randstad.nl"]
start_urls = ["http://www.randstad.nl/mwp2/faces/baanZoeken?afstand=10&pagina=1&_adf.ctrl-state=sb0riset7_4&sc=0&filters=vakgebied!5626&_afrLoop="]
def parse(self, response):
sel = Selector(response)
link =
for link in sel.xpath("//div[@class='search-result af_panelGroupLayout']"):
link = sel.xpath(".//a[contains(@class, 'outer-read-more-link')]/@href").extract()
yield Request(link, callback=self.parse)
print len(link)
text_list = sel.xpath('//div[@id="basePage:page:twoColumn:r2:0:functieOmschrijvingPanel::content"]/text()').extract()
if text_list:
text = '\n'.join(text_list)
item = CraigItem()
item['link'] = response.url
item['title'] = text
yield item
项目文件
from scrapy.item import Item, Field
class CraigslistRandstadItem(Item):
title = Field()
link = Field()
最佳答案
从默认的parse()
函数开始,每个spider函数都可以产生一些Item/s的组合。和/或Request/s ,请注意,如果您想返回多个项目/请求,则必须 yield
而不是 return
scrapy 然后负责将项目发送到 pipelines并调用这些请求
注意创建请求时应给出的callback
参数,这是scrapy将通过响应调用的函数。
最后,scrapy 会跟踪请求,并确保它们不会被多次调用,除非您在请求上设置 dont_filter=True
。
关于python - 从主页中提取的新页面中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20377646/