[英]HTTP Error 403: Forbidden /try to crawling google
我想在Google中自動搜索公司信息。 請如下所示查看我的代碼。 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()
嘗試設置User-Agent
HTTP標頭 。 許多Web服務器都禁止使用流行的編程庫的默認User-Agent字符串,以避免由漫游器引起的濫用。
還請記住,Google中也有其他限制,例如您可以執行的查詢數量限制。 在某些時候,如果查詢過多,您可能會看到驗證碼,甚至被禁止從IP進行進一步查詢。
如果是這種情況,您可能需要閱讀其文檔,並認為某些功能可能不是免費的。
您可能已被Google屏蔽。 查看您是否仍可以從瀏覽器訪問URL。 您需要在標頭中添加user agent
,並在每個URL請求之間延遲,如果長時間被阻止,則可能通過代理連接。
我可以建議使用基於urllib
構建的requests
包,並在編碼時提供更好的靈活性。
例如:
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)
def companyname():
for r in ws.rows:
row_index = r[0].row
Eng_name = r[1].value
Kor_name = bs(Eng_name)
#add delay after each crawl
time.sleep(5) #sleeps for 5 seconds
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.