小白在练习爬取一款商品信息,但是结果有时正常有时错误,print(req.text)后发现结果有两种,不得其解。后在浏览器种右键-查看网页源代码(同一个网页),发现不同的时间也有两种结果;同一时间内,浏览器查看的源代码和print(req.text)的往往也不一样,这是什么原因?怎么确保爬到charset="gbk"的那个?
主要网页截图和代码如下
# 需要调用的requests 库和 BeautifulSoup库中的bs4工具 import requests from bs4 import BeautifulSoup from fake_useragent import UserAgent import chardet num = 0 # 定义条数的初始值 # 定义一个变量url,为需要爬取数据我网页网址 url = 'https://detail.1688.com/offer/1256595978.html?spm=a261y.7663282.trade-type-tab.1.7a1e31e31MYdsg&sk=consign' # 获取这个网页的源代码,存放在req中,{}中为不同浏览器的不同User-Agent属性,针对不同浏览器可以自行百度 ua=UserAgent(use_cache_server=False) headers = {'User-Agent': ua.chrome} req = requests.get(url, headers=headers) print(req) print(req.status_code) print(req.url) print(req.encoding) print('----------') #chardet.detect(req.content) req.encoding='GBK' print(req.encoding) print(req.text) # 生成一个Beautifulsoup对象,用以后边的查找工作 soup = BeautifulSoup(req.text, 'lxml') #建立列表 xml=[] # 找到所有p标签中的内容并存放在xml这样一个类似于数组队列的对象中 xml.append(soup.find(class_="chinaname hidden")) # 利用循环将xml[]中存放的每一条打印出来 print(url) print("\n旺旺:",xml[0].string) # for i in range(len(xml)): # 表示从0到xml的len()长度 # msg = xml[i].string # if msg is not None: # num += 1