当前位置: 首页 > 知识库问答 >
问题:

刮擦蜘蛛保存到csv

燕烨
2023-03-14

我试图刮一个网站,并保存信息,我目前有两个问题。

首先,当我使用硒点击按钮(在这种情况下是加载更多结果按钮)时,它直到最后才点击,我似乎不知道为什么。

另一个问题是它没有保存到parse_article函数中的csv文件中。

以下是我的代码:

import scrapy
from selenium import webdriver
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from selenium.webdriver.common.by import By
import csv


class ProductSpider(scrapy.Spider):
    name = "Southwestern"
    allowed_domains = ['www.reuters.com/']
    start_urls = [
        'https://www.reuters.com/search/news?blob=National+Health+Investors%2c+Inc.']

    def __init__(self):
        self.driver = webdriver.Chrome()

    def parse(self, response):
        self.driver.get(response.url)

        while True:
            next = self.driver.find_element_by_class_name(
                "search-result-more-txt")
        #next = self.driver.find_element_by_xpath('//*[@id="content"]/section[2]/div/div[1]/div[4]/div/div[4]/div[1]')
        # maybe do it with this
        #button2 = driver.find_element_by_xpath("//*[contains(text(), 'Super')]")
            try:
                next.click()

            # get the data and write it to scrapy items
            except:
                break

        SET_SELECTOR = '.search-result-content'
        for articles in self.driver.find_elements(By.CSS_SELECTOR, SET_SELECTOR):
            item = {}
            # get the date
            item["date"] = articles.find_element_by_css_selector('h5').text
            # title
            item["title"] = articles.find_element_by_css_selector('h3 a').text

            item["link"] = articles.find_element_by_css_selector(
                'a').get_attribute('href')

            print(item["link"])

            yield scrapy.Request(url=item["link"], callback=self.parse_article, meta={'item': item})
        self.driver.close()

    def parse_article(self, response):
        item = response.meta['item']

        texts = response.xpath(
            "//div[contains(@class, 'StandardArticleBody')]//text()").extract()
        if "National Health Investors" in texts:
            item = response.meta['item']
            row = [item["date"], item["title"], item["link"]]
            with open('Websites.csv', 'w') as outcsv:
                writer = csv.writer(outcsv)
                writer.writerow(row)

共有2个答案

巫健柏
2023-03-14

第一个问题看起来按钮还没有出现。也许这可以帮助你。

还有一件事,当Scrapy关闭时,尝试关闭< code>driver。大概这个能帮到你。

第二个问题看起来你要做打开和写很多次,这并不好,因为你将覆盖现有内容。即使有“a”标志,例如打开(FILE_NAME,“a”),这在 Scrapy 中也不是很好的做法。

尝试创建Item填充它,然后使用管道机制将项目保存在CSV文件中。就像这里一样。

卢杰
2023-03-14
  1. 尝试在单击后稍等,以便加载数据。我想有时您的脚本会在显示新数据和新按钮之前搜索按钮。

尝试使用implicit_wait或explicit_wait:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# An implicit wait tells WebDriver to poll the DOM for a certain amount of time when trying to find any element
# (or elements) not immediately available.
driver.implicitly_wait(implicit_wait)

# An explicit wait is code you define to wait for a certain condition to occur before proceeding further
# in the code.
wait = WebDriverWait(self.driver, <time in seconds>)
wait.until(EC.presence_of_element_located((By.XPATH, button_xpath)))
 类似资料:
  • 我试着在一个. asp网站上运行一个蜘蛛,它需要登录授权和一些爬行到同一个网站内的不同页面。我昨天成功地使用我的蜘蛛登录,并正在用不同的功能抓取数据,当我在更改了as功能后再次运行蜘蛛时,蜘蛛停止了工作。我不知道发生了什么,我对网络抓取相当陌生。下面是代码: 以下是日志: 代码曾经能够尝试从页面中抓取一些我想要的数据,但没有成功,但我相信这只是因为我使用了错误的css选择器。现在它只是打开和关闭而

  • 我在这里和其他网站上读了很多关于scrapy的文章,但我无法解决这个问题,所以我问你:P希望有人能帮助我。 我想在主客户端页面中验证登录名,然后解析所有类别和所有产品,并保存产品的标题、类别、数量和价格。 我的代码: 当我在终端上运行scrapy爬行蜘蛛时,我得到以下信息: 刮痒的)pi@raspberry:~/SCRAPY/combatzone/combatzone/spiders$SCRAPY

  • 蜘蛛记录分为两部分: 时间筛选 和 蜘蛛记录 (详情) 1.时间筛选 便捷按钮有今日、昨日、前日、上周 X、近七天,并且能自定义选择时间段来得出想要的结果报表 2.蜘蛛记录 (时间段详情) 1)蜘蛛记录便是搜索引擎通过蜘蛛爬行所留下的痕迹,蜘蛛记录中的细分做的非常的详细, 包含蜘蛛IP地址、访问URL、蜘蛛类型、来访时间 2)搜索引擎爬取网页时,只有触发js统计代码才能被统计,故数据仅供参考

  • 海蜘蛛EWP(Easy Webserver Platform)是专门针对服务器运营商/企业等为各类网站运营而设计的稳定易用Web服务平台。它兼有路由器的功能,集专业级防火墙于一体,能够精确控制内外网的访问和各个用户的权限,打造一个高稳定性、易维护、投资低的全新智能化Web应用平台。 EWP基于嵌入式架构,提供稳定高效的底层核心功能和应用接口。能够兼容绝大多数国内外常见的Web应用,提供主流的Web

  • 我无法更改分析方法中的爬行器设置。但这肯定是一种方式。 例如: 但是项目将由FirstPipeline处理。新项目参数不工作。开始爬网后如何更改设置?提前谢谢!

  • 我正试着测试这只痒痒的爬行蜘蛛,但我不明白它为什么不爬行。它应该做的是在wikipedia的数学页面上爬行一个深度级别,然后返回每个爬行页面的标题。我错过了什么?非常感谢您的帮助! 设置: 日志: