Python-在网站上搜索最佳价格

Python-在网站上搜索最佳价格,python,beautifulsoup,price,Python,Beautifulsoup,Price,我有一堆未使用的steam密钥,我正试图编写一个小python脚本,在一些最便宜的steam密钥网站上搜索我拥有的每款游戏的最佳价格。目前,我已经试着作为一个例子来寻找g2a的最佳价格。脚本运行得几乎很好(是的,有时返回一个单一的价格并不完全返回我所拥有的游戏的价格,但这不是主要问题)。问题是,每当名称的某部分包含特殊字符时,我似乎无法正确搜索网页。我试图删除特殊字符,但问题仍然存在。有什么建议吗 这是我的剧本: import pandas as pd import sys from urlli

我有一堆未使用的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)
将熊猫作为pd导入
导入系统
从urllib.request导入urlopen,请求
从bs4导入BeautifulSoup
导入urllib.parse
carica=pd.read\u csv(“list.csv”)
行数=0
pageh=urlopen(请求('https://www.google.com'))

当行时,您不应该手动执行这些字符串“引用”-Python中有一组特殊的库函数可用于此操作-或从
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'

或者,更好的办法是,改用只在引擎盖下隐式引用的软件包。

您要删除的特殊字符是什么?你考虑过写正则表达式吗?我不知道到底是什么字符导致了这个问题。例如,如果我使用这个字符串(小镇恐怖:Galdor's Bluff Collector's Edition),则找不到该页面。您将该字符串设置为什么<代码>文件名
?是的,作为文件名,最后一页应该是:Town Terrs:Galdor's Bluff Collector's Edition,它在Chrome中工作。我已经尝试过了,这就是为什么我在开始时导入urllib.parse。但这无论如何都不起作用。@user8472609嗯,我认为与您发布的内容相比,
quote()
实际上做得很正确-例如,看看单个quote如何变成
%27
,但您只是用一个空字符串替换它。顺便说一句,当我在网站上搜索《小镇恐怖:加尔多的虚张声势收藏家版》时,我确实得到了同样的引用:。所以问题可能不在查询本身,而在返回的页面?我不明白怎么了。程序只是停止。