Python Scrapy正在尝试抓取多个页面
我是个新手。在我的第一个项目中,我尝试爬网一个包含多个页面的网页。我从第一页(index=0)获取数据,但无法从以下页面获取数据: 我尝试了不同的Python Scrapy正在尝试抓取多个页面,python,xpath,web-scraping,web-crawler,Python,Xpath,Web Scraping,Web Crawler,我是个新手。在我的第一个项目中,我尝试爬网一个包含多个页面的网页。我从第一页(index=0)获取数据,但无法从以下页面获取数据: 我尝试了不同的规则,但对我不起作用 这是我的代码: import scrapy from ..items import myfirstItem from scrapy.spiders import CrawlSpider, Rule from scrapy import Request from scrapy.linkextractors import Li
规则
,但对我不起作用
这是我的代码:
import scrapy
from ..items import myfirstItem
from scrapy.spiders import CrawlSpider, Rule
from scrapy import Request
from scrapy.linkextractors import LinkExtractor
from scrapy.item import Field, Item
class myfirstSpider(CrawlSpider):
name = 'myfirst'
start_urls = ["https://www.leroymerlin.es/decoracion-navidena/arboles-navidad"]
allowed_domains= ["leroymerlin.es"]
rules = (
Rule(LinkExtractor(allow= (), restrict_xpaths=('//li[@class="next"]/a'))),
Rule(LinkExtractor(allow= (), restrict_xpaths=('//a[@class="boxCard"]')), callback = 'parse_item', follow = False),
)
def parse_item(self, response):
items = myfirstItem()
product_name = response.css ('.titleTechniqueSheet::text').extract()
items['product_name'] = product_name
yield items
尽管我读过成千上万篇有同样问题的帖子,但没有一篇对我有用。。需要帮忙吗
*编辑:在得到@Fura的建议后,我找到了一个更好的解决方案。这就是它的样子:
class myfirstSpider(CrawlSpider):
name = 'myfirst'
start_urls = ["https://www.leroymerlin.es/decoracion-navidena/arboles-navidad?index=%s" % (page_number) for page_number in range(1,20)]
allowed_domains= ["leroymerlin.es"]
rules = (
Rule(LinkExtractor(allow= r'/fp',), callback = 'parse_item'),
)
def parse_item(self, response):
items = myfirstItem()
product_name = response.css ('.titleTechniqueSheet::text').extract()
items['product_name'] = product_name
yield items
运行代码的结果是什么?此页面使用
JavaScript
添加到下一页的链接,但scrapy无法运行JavaScript。若您在浏览器中关闭JavaScript并在浏览器中加载页面,那个么您将看到并没有链接。您需要使用能够运行JavaScript
的splash
。最终与@Alex一起工作:代码的结果在第一页看起来很好,但在接下来的几页中没有任何结果。@Furas:我会看一看!让我们看看我是否能理解它是如何工作的!谢谢你,伙计Selenium
可以控制可以运行JavaScript
的web浏览器Chrome/Firefox,它可以在运行JavaScript后生成HTMLSplash
用于此Qt小部件WebKit
,它还可以显示HTML和运行JavaScript。而Splash
是由Scrapy
的作者创建的。