一.在获取网页源码时,需要设置requests.get()中的headers参数,模拟浏览器的访问请求。
headers参数提供的是网站访问者的信息
headers中的User-Agent(用户代理)表示是用什么浏览器访问的
import requests
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
url ='https://www.baidu.com/s?tn=news&rtt=1&bsst=1&cl=2&wd=阿里巴巴'
res = requests.get(url,headers=headers).text
print(res)
【小技巧】查看浏览器版本
打开浏览器,在地址栏中输入about:version,可以试一下
二.使用正则表达式
1.findall()函数:在原始文本中寻找所有符合匹配规则的文本内容
re.findall(匹配规则, 原始文本)
findall()函数得到的是一个列表,而不是字符串或数字
import re
content = 'Hello 123 world'
result = re.findall('\d\d\d', content) # \d 匹配1个数字
print(result) # ['123']
如果想获取某个元素
import re
content2 = 'Hello 123 world 456 华小智Python基础教学135'
result2 = re.findall('\d\d\d', content2)
print(result2) # ['123', '456', '135']
print(result2[0]) # 123
(.*?)
用于获取文本A与文本B之间的内容,并不需要知道它的确切长度及格式,但是需要知道它在哪两个内容之间
文本A(.*?)文本B
import re
res = '文本A百度新闻文本B,新闻标题文本A新浪财经文本B,文本A搜狗新闻文本B新闻网址'
p_source = '文本A(.*?)文本B'
source = re.findall(p_source, res)
print(source)
网友评论