【发布时间】:2015-10-12 21:28:36
【问题描述】:
您能帮我更正这个脚本吗:我有一个链接搜索结果列表,我想查看和抓取这些链接中的每一个。
但是这个脚本只点击了第一个链接,然后我的爬虫就停止了。
任何帮助表示赞赏
代码“蜘蛛”:
from scrapy.contrib.spiders import CrawlSpider
from scrapy import Selector
from selenium import webdriver
from selenium.webdriver.support.select import Select
from time import sleep
import selenium.webdriver.support.ui as ui
from scrapy.xlib.pydispatch import dispatcher
from scrapy.http import HtmlResponse, TextResponse
from extraction.items import ProduitItem
from scrapy import log
class RunnerSpider(CrawlSpider):
name = 'products_d'
allowed_domains = ['amazon.com']
start_urls = ['http://www.amazon.com']
def __init__(self):
self.driver = webdriver.Firefox()
def parse(self, response):
sel = Selector(response)
self.driver.get(response.url)
recherche = self.driver.find_element_by_xpath('//*[@id="twotabsearchtextbox"]')
recherche.send_keys("A")
recherche.submit()
resultat = self.driver.find_element_by_xpath('//ul[@id="s-results-list-atf"]')
#Links
resultas = resultat.find_elements_by_xpath('//li/div[@class="s-item-container"]/div/div/div[2]/div[1]/a')
links = []
for lien in resultas:
l = lien.get_attribute('href')
links.append(l)
for result in links:
item = ProduitItem()
link = result
self.driver.get(link)
item['URL'] = link
item['Title'] = self.driver.find_element_by_xpath('//h1[@id="aiv-content-title"]').text
yield item
self.driver.close()
【问题讨论】:
-
请先用你的实际缩进来修正你的代码(或者这些是你代码的实际缩进吗?),因为 Python 关心这一点,阅读你代码的人也关心这一点。 :)
-
另外,您似乎仍在使用
selenium.webdriver做事,而不是scrapy。看来您可以使用其中任何一个来完成任务。 -
好的,我编辑了我的代码@starrify
标签: python selenium hyperlink web-crawler scrapy