qq_24862331 2020-07-04 02:54 采纳率: 0%
浏览 39
已结题

两次查看网页源代码的结果不一致,如何解决

小白在练习爬取一款商品信息,但是结果有时正常有时错误,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
  • 写回答

5条回答 默认 最新

  • qq_24862331 2020-07-04 05:36
    关注

    懂了,在新的浏览器里直接粘贴网址进入会有验证界面,utf-8版本就是验证界面的网页源代码,之所以商品网页也可以刷出utf-8版本也许可能是放置过久,已需要验证。

    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献