[英]How do I convert a human-readable date + time to a Unix timestamp in Python?
[英]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.