【问题标题】:How do I target specific element using class如何使用类定位特定元素
【发布时间】:2020-01-21 12:35:48
【问题描述】:

我正在尝试抓取这个名为 startup-India 的网站,我在其中抓取公司的 URL 和名称,但要抓取 URL 和名称我必须定位它们,但我不知道哪种定位方法是正确的,请帮助。


import logging
from bs4 import BeautifulSoup
import requests
import csv
import scrapy

class WebCrawlerPipeline(object):
    def process_item(self, item, spider):
        return item


class ProfileCrawlerPipeline(object):
    def open_spider(self, spider):
        self.urls = list()
        self.companies = list()
        pass

    def process_item(self, item, spider):
        item = dict(item)
        url = item.get('item')
        # yield scrapy.Request(url=url, callback=self.parse_content)
        # logging.info(url)
        r = requests.get(url).content
        soup = BeautifulSoup(r, 'html.parser')
        # url_txt = soup.select('div.container')
        container = soup.find("div", class_="container")
        logging.info(container)
        # # self.write_to_csv()

    def parse_content(self, response):
        logging.info(response.url)

    def close_spider(self, spider):
        pass

    def write_to_csv(self):
        pass

代码将不胜感激

【问题讨论】:

标签: python-3.x web-scraping beautifulsoup scrapy


【解决方案1】:

您不需要将 BeautifulSoup 与 Scrapy 一起使用。

我建议你看看 Scrapy 教程并使用 Xpath 或 CSS 选择器:https://docs.scrapy.org/en/latest/intro/tutorial.html#xpath-a-brief-intro

【讨论】:

  • 我明白你的意思,即使我已经习惯了scrapy,并且非常愿意使用scrapy,但问题是当我提出请求时,scrapy 不会因为这个原因触发回调使用 beautifulsoup4。
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 2012-11-11
  • 2018-03-17
  • 1970-01-01
  • 2018-03-04
  • 2017-06-04
  • 2012-05-15
  • 2016-12-30
相关资源
最近更新 更多