我想在谷歌中自动搜索公司信息。 请参阅下面的代码。 HTTP错误403:禁止或HTTP错误404:禁止发生。
from urllib.request import urlopen
from bs4 import BeautifulSoup
from urllib import parse
import openpyxl
wd = openpyxl.load_workbook('C:/Users/Lee Jung
Un/Documents/hopeyouwork.xlsx')#locate of excel file.
ws = wd.active
def bs(Eng_name):
url = "https://www.google.co.kr/search?ei=hWEaW-bKEMnb8QWa1IrQDw&q="
q = parse.quote(Eng_name)
html = urlopen(url + q)
bsObj = BeautifulSoup(html, "html.parser")
twg = bsObj.select("div.ifM9O > div:nth-child(2) > div.kp-header > div >
div.DI6Ufb > div > div > div.d1rFIf > div.kno-ecr-pt.kno-fb-ctx > span")
if bool(twg):
return twg.text
else:
info = "none"
return info
def companyname():
for r in ws.rows:
row_index = r[0].row
Eng_name = r[1].value
Kor_name = bs(Eng_name)
ws.cell(row=row_index, column=1).value = row_index
ws.cell(row=row_index, column=2).value = Eng_name
ws.cell(row=row_index, column=3).value = Kor_name
wd.save("Done.xlsx")
wd.close()
companyname()
答案 0 :(得分:0)
Try setting the User-Agent
HTTP header。许多网络服务器禁止使用流行编程库的默认用户代理字符串,以避免机器人滥用。
另请注意,Google也有其他限制,例如您可能执行的查询数量限制。在某些时候,如果您查询过多,您可能会看到CAPTCHA甚至被禁止进一步查询来自IP。
如果是这种情况,您可能需要阅读他们的文档并考虑某些功能可能不是免费的。
答案 1 :(得分:0)
您可能已被谷歌屏蔽了。
看看您是否仍然可以从浏览器访问URL。您需要在标头中添加LOAD CSV WITH HEADERS FROM "file:///dump.csv" AS row
MERGE (a:Person {name:row.person1Name})
MERGE(b:Person {name:row.person2Name})
FOREACH (t in CASE WHEN NOT EXISTS((a)-[*]->(b)) THEN [1] ELSE [] END |
MERGE (a)-[pr:Managed]->(b))
并在每个网址请求之间延迟,如果长时间阻止,可以通过代理连接。
我建议使用构建在user agent
之上的requests
包,并在编码时提供更好的灵活性。
前:
urllib
headers = {
'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) '
'Gecko/20100101 Firefox/61.0'),
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
}
## proxies is optional
ip = 'blah-blah'
port = 'blah'
proxies = {"http": 'http://' + ip + ':' + port,
"https": 'http://' + ip + ':' + port}
html = requests.get(url, headers=headers, proxies=proxies)
time.sleep(number)