python爬取百度百科搜索结果_用Python抓取百度搜索结果,python,爬取,的

本文介绍了使用Python爬取百度搜索结果时的两个关键点:使用带有cookie的requests.session()进行访问以避免反爬机制,以及转换获取的URL以获得实际的搜索结果链接。通过示例代码展示了如何实现这一过程。
摘要由CSDN通过智能技术生成

前言

前几天爬的今天整理了一下发现就两个需要注意的点

一是记得用带cookie的方式去访问,也就是实例化requests.session()

二是转化一下爬取到的url,访问爬到的url得到返回的Location值,该值便是真实的地址(如果你不是要爬url当我没说)

知道了这两点可以直接先去尝试一下,并没有想象的那么难,爬不出来再看代码

正文

不带cookie访问,直接用requests.get()访问,可以看到只能成功访问一次。其他的虽然状态码是200但应该是触发了反爬机制返回了其他页面给你

174c161faa47d33208b705d7bbcdaa45.png

带cookie访问,基本上都成功了

1f332173df89e42e4ee96bf8c00b752f.png

转化一下得到的url,得到最终的url

2f5ab69be4ba2029709270d66c5b9b83.png

最终代码

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值