簡體   English   中英

如何將 Python 抓取的 Bing 網頁內容轉換為人類可讀的?

[英]How do I convert Python crawled Bing web page content to human-readable?

我正在玩使用 python 抓取 Bing 網絡搜索頁面。 我發現接收到的原始內容看起來像字節類型,但嘗試解壓縮它失敗了。 有人知道這是什么類型的數據,我應該如何從這些原始內容中提取可讀的內容? 謝謝!

我的代碼顯示原始內容,然后嘗試執行 gunzip,因此您可以看到原始內容以及解壓錯誤。 由於原始內容太長,我只粘貼下面的前幾行。

代碼:

import urllib.request as Request
import gzip

req = Request.Request('www.bing.com')
req.add_header('upgrade-insecure-requests', 1)
res = Request.urlopen(req).read()
print("RAW Content: %s" %ResPage) # show raw content of web
print("Try decompression:")
print(gzip.decompress(ResPage))   # try decompression

結果:

RAW Content: b'+p\xe70\x0bi{)\xee!\xea\x88\x9c\xd4z\x00Tgb\x8c\x1b\xfa\xe3\xd7\x9f\x7f\x7f\x1d8\xb8\xfeaZ\xb6\xe3z\xbe\'\x7fj\xfd\xff+\x1f\xff\x1a\xbc\xc5N\x00\xab\x00\xa6l\xb2\xc5N\xb2\xdek\xb9V5\x02\t\xd0D \x1d\x92m%\x0c#\xb9>\xfbN\xd7\xa7\x9d\xa5\xa8\x926\xf0\xcc\'\x13\x97\x01/-\x03... ...

Try decompression:
Traceback (most recent call last):
OSError: Not a gzipped file (b'+p')


Process finished with exit code 1

開始使用請求庫要容易得多。 另外,這也是當今HTTP請求最常用的庫。

在您的python環境中安裝請求:

pip install requests

在您的.py文件中:

import requests

r = requests.get("http://www.bing.com")

print(r.text)

除了Zilong Li 的回答,您還需要通過一個user-agent來請求headers以充當“真正的”用戶訪問。

如果在使用requests庫時沒有user-agent被傳遞到請求headers ,它默認為python-requests,所以 Bing 或其他搜索引擎會理解它是一個機器人/腳本,並阻止請求。 檢查您的user-agent是什么

使用requests庫傳遞user-agent

headers = {
    'User-agent':
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582'
}

requests.get('URL', headers=headers)

如何減少網頁抓取搜索引擎被攔截的機會


或者,您可以使用 SerpApi 的Bing Organic Results API實現相同的目的。 這是一個帶有免費計划的付費 API。

不同之處在於您不必花時間試圖繞過 Bing 或其他搜索引擎的阻止。 相反,應關注需要從結構化 JSON 中提取的數據。 看看操場

免責聲明,我為 SerpApi 工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM