gpt4 book ai didi

python - 用 Scrapy 和 Selenium 抓取

转载 作者:太空狗 更新时间:2023-10-29 23:59:28 27 4
gpt4 key购买 nike

我有一个 scrapy 蜘蛛,它爬行一个网站,该网站通过页面上的 javascript 重新加载内容。为了转到下一页进行抓取,我一直在使用 Selenium 单击网站顶部的月份链接。

问题是,即使我的代码按预期移动通过每个链接,蜘蛛程序也只是抓取第一个月(9 月)的月数数据并返回此重复数据。

我该如何解决这个问题?

from selenium import webdriver

class GigsInScotlandMain(InitSpider):
name = 'gigsinscotlandmain'
allowed_domains = ["gigsinscotland.com"]
start_urls = ["http://www.gigsinscotland.com"]


def __init__(self):
InitSpider.__init__(self)
self.br = webdriver.Firefox()

def parse(self, response):
hxs = HtmlXPathSelector(response)
self.br.get(response.url)
time.sleep(2.5)
# Get the string for each month on the page.
months = hxs.select("//ul[@id='gigsMonths']/li/a/text()").extract()

for month in months:
link = self.br.find_element_by_link_text(month)
link.click()
time.sleep(5)

# Get all the divs containing info to be scraped.
listitems = hxs.select("//div[@class='listItem']")
for listitem in listitems:
item = GigsInScotlandMainItem()
item['artist'] = listitem.select("div[contains(@class, 'artistBlock')]/div[@class='artistdiv']/span[@class='artistname']/a/text()").extract()
#
# Get other data ...
#
yield item

最佳答案

问题是您正在重用为初始响应定义的 HtmlXPathSelector。从 selenium 浏览器 source_code 重新定义它:

...
for month in months:
link = self.br.find_element_by_link_text(month)
link.click()
time.sleep(5)

hxs = HtmlXPathSelector(self.br.page_source)

# Get all the divs containing info to be scraped.
listitems = hxs.select("//div[@class='listItem']")
...

关于python - 用 Scrapy 和 Selenium 抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18836286/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com