python3.7爬虫贴吧_python爬虫之百度贴吧

8bcc7737e00a

最近又尝试着爬取了百度贴吧,发现新增的几个反爬点,故来做下记录。

爬取百度贴吧大致流程为:

1 - 构造url,headers

2 - 发送请求,获取响应

3 - 数据解析

4 - 翻页

使用工具:python,requests,lxml

操作步骤讲解环节

下面就是喜闻乐见的操作步骤讲解环节了(´◔౪◔)

代码部分:

import requests

from lxml import etree

class TieBa(object):

def __init__(self, name):

self.url = 'https://tieba.baidu.com/f?ie=utf-8&kw={}'.format(name)

self.headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.81',

# 版本较low的浏览器UA,不会屏蔽html内容

# 不过也可以使用response.content.decode('utf-8').replace('', '')

# 'User-Agent': 'Mozilla/4.0 '

}

def run(self):

while True:

response = requests.get(self.url, headers=self.headers)

with open('index.html', 'wb')as f:

f.write(response.content)

re = response.content.decode('utf-8').replace('', '')

html = etree.HTML(re)

a = html.xpath('//li[@class=" j_thread_list clearfix thread_item_box"]/div/div[2]/div[1]/div[1]/a')

for i in a:

print(i.xpath('./text()')[0], 'https://tieba.baidu.com/' + i.xpath('@href')[0])

# 下一页

try:

self.url = 'https:' + html.xpath('//*[contains(text(),"下一页")]/@href')[0]

print(self.url)

except:

break

if __name__ == '__main__':

tieba = TieBa('百度')

tieba.run()

要点总结:

1 - 当UA使用较高版本时,响应的内容会屏蔽一部分代码,这时可以使用较低的UA进行处理,当然也可以替换掉屏蔽符实现反屏蔽的目的。

2 - 使用xpath获得的节点对象,在还没进行text()或提取属性前,还可以针对该对象再一次进行xpath操作。

3 - 当定位不到翻页时,则已经到达了尾页,这时break退出循环。

那么本次的分享就到这里了,喜欢的话麻烦点赞关注一下;不喜欢的话可以去看下小编的其他文章,肯定有喜欢的;都不喜欢的话可以点个关注,万一以后有喜欢的呢(๑•̀ㅂ•́)و✧

有疑问的小伙伴也可以在评论区留言哦,我会第一时间解答的。

8bcc7737e00a

你点了吗◔ ‸◔?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值