【发布时间】:2021-09-30 00:12:21
【问题描述】:
我目前正在尝试抓取一个网站(下面代码中的 url),但是当我拉出我想要使用的 html 部分时,我得到的只是我正在寻找的信息的变量名为了。当我手动检查页面的 html 时,变量的实际值是存在的,但我假设当我抓取页面时,我看到的只是从其他地方引用该变量的网站。
我希望有人可以帮助我尝试访问这些信息。我尝试使用 selenium 抓取网站的 html,但是我似乎只是返回了使用请求时抓取的相同 html(也许我做错了,有人可以告诉我正确的方法)。
这是我的代码的改进版本:
import scrapy #For scraping
from scrapy import Selector
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
'Accept-Language': 'en-GB,en;q=0.5',
'Referer': 'https://google.com',
'DNT': '1'}
url = 'https://groceries.aldi.ie/en-GB/drinks/beer-ciders'
html = requests.get(url, headers=headers).content
sel = Selector(text=html)
x = sel.xpath('//*[@id="vueSearchResults"]/div//span')#/div[2]/div/div[4]/div/div/span/span
print((x.extract())[8])
然后返回以下内容:
<span>{{Product.ListPrice}}</span>
我想从中获取“Product.ListPrice”的实际值。如果有人能指出正确的方向来访问此变量的信息,或者抓取网站 html 的方法,我将不胜感激 - 正如用户浏览网页所看到的那样。 ** 建议我通过此 API 发送 POST 请求:“https://groceries.aldi.ie/api/product/calculatePrices”以及传递请求标头和有效负载,但我不完全确定如何把它拉下来(我对抓取的这方面很陌生),如果有人能给我提供一个如何执行这个的例子,我将不胜感激! 谢谢!
【问题讨论】:
标签: python html web-scraping scrapy