好的,所以我必须完全编辑它。我有脚本部分工作,我可以毫无问题地启动它,这是脚本。粘贴链接位于:http://www.w3schools.com/tags/tag_ul.asp,您可以看到我在cmd行中获得的内容。我确定正在搜索的关键字是在那些链接中,因为我也尝试了其他单词,但它没有下载它们。
import scrapy
import requests
from scrapy.http import Request
import scrapy
from FinalSpider.items import Page # Defined in items.py
URL = "http://url.com=%d"
starting_number = 60000
number_of_pages = 100
class FinalSpider(scrapy.Spider):
name = "FinalSpider"
allowed_domains = ['url.com']
start_urls = [URL % starting_number]
def __init__(self):
self.page_number = starting_number
def start_request(self):
# generate page IDs from 1000 down to 501
for i in range (self.page_number, number_of_pages, -1):
yield Request(url = URL % i, callback=self.parse)
def parse(self, response):
for link in response.xpath('//a[text()="Amount"]/@href').extract():
yield Page(url=link)
答案 0 :(得分:2)
在这里你要问两件事,
您提供的 xpath response.xpath('//100.00()')
是无效的xpath表达式。
如果您想在文本中找到包含某些子字符串的a
标记,例如<a href="something"> 100.00 </a>
,则正确的xpath将为'//a[contains(text(), "100.00")]'
。请注意使用contains
,如果您有完全文本,则可以使用'//a[text() == "100.00"]'
。
在Scrapy中,习惯上创建一个Item
类来保存您已经废弃的数据,逻辑结构由您定义的Field
。
首先,您创建一个Item
子类,其中包含url
Field
,并在您的蜘蛛中return
或yield
创建一个新实例Item
将字段url
设置为您在页面中找到的值。
把所有这些放在一起,
您必须创建Item
,如图所示here:
import scrapy
class Page(scrapy.Item):
url = scrapy.Field()
然后,在您的蜘蛛中提取response
对象中的所有有意义的数据。查看示例here以获得感受。但一般来说,你的代码就像,
import scrapy
from myproject.items import Page # Defined in items.py
class MySpider(scrapy.Spider):
[...]
def parse(self, response):
for link in response.xpath('//a[text()="100.00"]/@href').extract():
yield Page(url=link)