基本问题,爬数的时候,模拟一下头文件浏览器打开
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36'}
这样就可以正常拿到数据了
完整代码如下(返回的部分是有一些html转义字符的,暂时没有去除)
# !usr/bin/env python
# -*-coding:utf-8 -*-
import requests
from lxml import etree
import re
def get_info(keyword: str):
url = f'https://baike.baidu.com/item/{keyword}'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/90.0.4430.85 Safari/537.36'
}
try:
r = requests.get(url, headers=headers)
r.encoding = 'utf-8'
tree = etree.HTML(r.text)
divs = tree.cssselect('div.lemma-summary>.para')
lis_text = []
for div in divs:
st = re.sub('<[^>]+>', '', etree.tounicode(div))
lis_text.append(st)
return '\n'.join(lis_text)
except Exception as e:
print(e)
return
if __name__ == '__main__':
keyword = 'python'
info = get_info(keyword)
print(info)
运行结果:
Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品。
[1]
Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,
[2]
随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
[3]
Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。
[4]
Python 也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。
[4]