python - 带有 Scrapy Python 的 CSS 选择器 HTML
问题描述
我正在尝试制作一个网络爬虫来从雅虎财经中提取一些信息作为个人项目。但是,在雅虎财经的分析页面上,我无法提取特定值。HTML对我来说似乎很复杂,我可以得到一些指导吗?
class yhcrawler(scrapy.Spider):
name = 'yahoo'
start_urls = [f'https://ca.finance.yahoo.com/quote/{t}/analysis?p={t}' for t in tkrs]
def parse(self, response):
filename = 'stock_growths.csv'
l = response.css('div#YDC-Col1>div>div>div>div>div>section>table>tbody>tr>td#431::text').extract()
print(l)
这就是我正在尝试的
l = response.css('div#YDC-Col1>div>div>div>div>div>section>table>tbody>tr>td#431::text').extract()
我得到一个空的结果
2021-04-18 15:12:54 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://ca.finance.yahoo.com/quote/M/analysis?p=M> (referer: None)
[]
解决方案
尝试这个:
class YahoofinanceSpider(scrapy.Spider):
name = 'yahoofinance'
start_urls = ['https://ca.finance.yahoo.com/quote/aapl/analysis?p=aapl']
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'
}
def start_requests(self):
for start_url in self.start_urls:
yield scrapy.Request(start_url,headers=self.headers)
def parse(self, response):
item = response.xpath("//td[./span][contains(.,'Next 5 Years')]/following-sibling::td/text()").getall()
yield {"item":item}
推荐阅读
- css - 如何使用数据绑定将部分类名字符串更改为任何 ISO 国家代码?
- c++ - 从列表到数组c ++中查找模式或最常见的数字
- php - 在 Ubuntu 18.04 上安装 Laravel 时找不到 /vendor/autoload.php
- azure - Azure 媒体服务 - 为视频分析创建自定义预设
- ionic-framework - 构建脚本无法在离子部署中构建应用程序 [离子]
- excel - Excel 子中的问题以导入具有非 ASCII 字符的固定宽度文本文件
- html - 梯形截面,剪切背景图像
- c++ - #include 语句的语法高亮颜色
- asp.net-mvc - UnitOfWork、autofac、存储库和身份
- r - 使用 ggplot2 创建等高线图时出错?