我正在寻找一些当地的汽车网站来跟踪价格,这样当它们开始“促销”时,我实际上可以判断它是否属实。
我已经完成了 books.toscrape 网站。我为高尔夫球杆制作了一个追踪器,但我不明白为什么我在汽车追踪器上没有得到任何回报。
以下是我目前所拥有的:
我尝试过选择器、XPATH、完整 Xpath,但就是不明白
import scrapy
import csv
import pandas as pd
from datetime import date
from scrapy.crawler import CrawlerProcess
today = date.today()
today = str(today)
class Airdrie(scrapy.Spider):
name = "AirdrieHonda"
allowed_domains = ["aidriehonda.ca"]
start_urls = ["https://www.airdriehonda.ca/vehicles?refinementList=%7B%22stock_type%22%3A%5B%22NEW%22%5D%2C%22model_name%22%3A%5B%22CR-V%22%5D%7D"]
def parse(self, response):
Airdrie_Car = response.css("#app > main > div.container.max-w-\[97rem\] > div > div > div.grid-cols-4.mb-64 > div > div:nth-child(2) > a.contents > div > div.inventory_footer__wspJ5.typ-label > p ::text").extract()
Aidrie_Price = response.css("main > div.container.max-w-\[97rem\] > div > div > div.grid-cols-4.mb-64 > div > div:nth-child(2) > a.contents > div > div.flex.flex-row.flex-grow.w-full > div > div.col-span-1.text-right > span ::text").extract()
Airdrie_DF = pd.DataFrame(list(zip(*[Airdrie_Car,Aidrie_Price]))).add_prefix('Col')
Airdrie_DF = Airdrie_DF.replace(r'\n',' ', regex=True)
Airdrie_DF.rename(columns={"Col0":"Type", "Col1": "Price",}, inplace = True)
Airdrie_DF.to_csv(("AirdrieHonda" + (today) + ".csv"), encoding='utf-8', index=False)
print(Airdrie_DF)
process = CrawlerProcess()
process.crawl(Airdrie)
process.start()
我希望获取所有当前汽车、型号、价格的列表,然后导出到 CSV。
我可以弄清楚那部分,但我就是无法获取我想要提取的数据。
对于任何读过这篇文章并且有同样问题的人来说。我想通了。某些网站会阻止您使用机器人访问其网站并抓取数据。
它很容易解决。您可以谷歌“Google 用户代理”。然后使用他们的用户代理,更新 scrapy 项目中的 settings.py 文件,然后它将绕过限制。
我在几个网站上测试过。在我得到“0 页被刮掉”且没有任何回报之前。事实证明这是一个 403 错误(被阻止访问该网站)。将 USER_AGENT 更新到 Google 后,就没有问题了。