python - Python - 在网站上搜索最优惠的价格
问题描述
我有一堆未使用的 Steam 密钥,我正在尝试编写一个小的 Python 脚本来搜索我在一些最便宜的 Steam 密钥网站上拥有的每款游戏的最优惠价格。目前,我已经尝试作为示例在 g2a 上找到最优惠的价格。该脚本运行得几乎没有问题(是的,有时返回单一价格并不能完全返回我拥有的游戏的价格,但这不是主要问题)。问题是,每当名称的一部分包含特殊字符时,我似乎无法正确搜索网页。我试图删除特殊字符,但问题仍然存在。有什么建议吗?
这是我的脚本:
import pandas as pd
import sys
from urllib.request import urlopen, Request
from bs4 import BeautifulSoup
import urllib.parse
carica = pd.read_csv("list.csv")
rows=0
pageh = urlopen(Request('https://www.google.com'))
while rows<len(carica)-1:
#while rows<3:
rows=rows+1
filename = (carica.values[rows,0])
filename = filename.replace(",","")
filename = filename.replace(" ","%20")
filename = filename.replace("'","")
if filename is None:filename='Demo'
quote_page = ('https://www.g2a.com/en-us/search?query='+filename)
try:page = urlopen(Request(quote_page, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30'}))
except IOError: page=pageh
soup = BeautifulSoup(page,'html.parser')
namea = carica.values[rows,0]
pricea = soup.find(class_='Card__price-cost price')
if pricea is None:pricea.text='non trovato'
testo='\x1b[0m' + carica.values[rows,0] + '\x1b[0m'
print(testo, '-->', pricea.text)
它的一个版本包括游戏列表在这里: https ://repl.it/@PaoloVeronesi/g2a-prices
解决方案
您不应该手动执行这些字符串“引用” - 在 Python 中有一组特殊的库函数可用于 -quote()
或quote_plus()
来自urllib.parse
模块:
In [1]: from urllib.parse import quote
In [2]: s = "Small Town Terrors: Galdor's Bluff Collector's Edition"
In [3]: quote(s)
Out[3]: 'Small%20Town%20Terrors%3A%20Galdor%27s%20Bluff%20Collector%27s%20Edition'
In [4]: quote_plus(s)
Out[4]: 'Small+Town+Terrors%3A+Galdor%27s+Bluff+Collector%27s+Edition'
或者,更好的是,改用requests
只在幕后进行隐式引用的包。
推荐阅读
- java - DatabaseReference 的 setValue() 方法是否具有可在单个调用中写入的最大子项数?
- c++ - 无法从向量中删除元素,试图引用已删除的函数
- apache-spark - 是什么导致了配置单元表分区中的不同模式?
- rxjs - 使用回调使方法主体化
- ios - 当 Firebase 中的数据发生变化时更新视图错误
- python - python3中的数组乘法
- python - 如何使用 pcolor 添加主要和次要网格线?
- typescript - 是否可以使用节点 js 云功能访问 FieldValue?
- gatsby - 无法显示来自 gatsby-image 的 Img
- javascript - 有没有办法在 JavaScript 中有条件地缩短对象的成员函数?