python - 使用用户输入进行 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()
解决方案
该网站受 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)
推荐阅读
- php - Shopify - 通过多个变体 ID 检索多个变体详细信息
- php - PHP - 在带有 Slim 3 withRedirect() 响应的 Twig 视图上显示验证消息
- python - 验证具有重复键的二叉搜索树
- r - 如何根据行修改矩阵的行(制作 Haar 矩阵)
- python - Django 无法识别 Gensim
- android - Android Studio 选择布局不起作用(Material.NoActionBar.Fullscreen)
- visual-studio-code - Visual Studio 代码未显示有关库属性和方法的提示
- networking - DNS在传输层使用UDP协议时如何可靠?
- python - Python将排行榜从最高到最低分数和前5名排序(外部文件)
- javascript - 加载所有内容后的 JS 警报