python爬取百度百科搜索结果_用Python抓取百度搜索结果,python,爬取,的
前言
前幾天爬的今天整理了一下發現就兩個需要注意的點
一是記得用帶cookie的方式去訪問,也就是實例化requests.session()
二是轉化一下爬取到的url,訪問爬到的url得到返回的Location值,該值便是真實的地址(如果你不是要爬url當我沒說)
知道了這兩點可以直接先去嘗試一下,并沒有想象的那么難,爬不出來再看代碼
正文
不帶cookie訪問,直接用requests.get()訪問,可以看到只能成功訪問一次。其他的雖然狀態碼是200但應該是觸發了反爬機制返回了其他頁面給你
帶cookie訪問,基本上都成功了
轉化一下得到的url,得到最終的url
最終代碼
import requests
from bs4 import BeautifulSoup
import time
#將百度的url轉成真實的url
def convert_url(url):
resp = requests.get(url=url,
headers=headers,
allow_redirects=False
)
return resp.headers['Location']
#獲取url
def get_url(wd):
s = requests.session()
#10為第2頁,20為第三頁,30為第四頁,以此類推
for i in range(10, 600, 10):
url = 'https://www.baidu.com/s'
params = {
"wd": wd,
"pn": i,
}
r = s.get(url=url, headers=headers, params=params)
print(r.status_code)
soup = BeautifulSoup(r.text, 'lxml')
for so in soup.select('#content_left .t a'):
g_url = so.get('href')
print(convert_url(g_url))
time.sleep(1 + (i / 10))
if __name__ == '__main__':
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0",
"Host": "www.baidu.com",
}
wd = input("輸入搜索關鍵字:")
get_url(wd)
總結
以上是生活随笔為你收集整理的python爬取百度百科搜索结果_用Python抓取百度搜索结果,python,爬取,的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用户表如何区分普通用户和管理员_Gate
- 下一篇: vue获取input的属性_vuejs