首页 > 解决方案 > 使用用户输入进行 Python Web 抓取?

问题描述

这是我第一次尝试网页抓取。我试图按州查找汽油价格。我做的第一个有效的代码是

url = "https://www.gasbuddy.com/usa/la"

    page = requests.get(url)

    soup = BeautifulSoup(page.content, 'html.parser')

    title = soup.find(id= "Nevada").get_text()
    price = soup.find("div", class_="col-sm-2 col-xs-3 text-right").get_text()
    print(price)
    print(title)

现在我想做它,以便用户可以输入状态。在第一个程序中,我只是选择了一个状态并这样写

title = soup.find(id= "Nevada").get_text()

我将如何做到这一点,这样就可以了

State = input("Input Your State ")
title = soup.find(id= State ).get_text()

标签: pythonweb-scraping

解决方案


该网站受 cloudflare 保护。这就是为什么您不能使用普通请求来抓取它的原因。您可以使用 cloudcraper 模块来抓取它。安装它:pip install cloudscraper

代码:

import cloudscraper
scraper = cloudscraper.create_scraper()

url = "https://www.gasbuddy.com/usa/la"

page = scraper.get(url)

soup = BeautifulSoup(page.content, 'html.parser')

state = input("Input Your State ").strip()
title = soup.find(id= state ).get_text()

price = soup.find("div", class_="col-sm-2 col-xs-3 text-right").get_text()
print(price)
print(title)

推荐阅读