爬虫爬取的源代码和直接从网页打开的源代码不一样

爬虫爬取的源代码和直接从网页打开的源代码不一样

import re
import requests
from bs4 import BeautifulSoup
import webbrowser


def Get_web(url): #获取网页的HTML文档。这里web_info 显示的HTML文件和直接从网页查看源文件的都不一样了
    try:
        r = requests.get(url,headers={'user-agent':'Mozilla/5.0'})
        print("!")
        print(r.raise_for_status())
        r.encoding=r.apparent_encoding
        web_info=r.text
        print(web_info)
    except:
        print("error")
    return web_info

def Process_text(web_info):
    soup = BeautifulSoup(web_info,"html.parser")
    script = soup.find_all("script")
    print(script)
    Processed_text=[]
    return Processed_text

def Print_text(Processed_text):
    pass


def main():
    item="螺狮粉"
    for num in range(0,1):
        url="https://s.taobao.com/search?q=螺狮粉&s=0"
        webbrowser.open(url, new=0, autoraise=True)
        web_info = Get_web(url)
        Process_text(web_info)

main()

如果是静态页面抓取应该是和浏览器打开的一样的,动态加载的内容是不能直接抓取 的,比如嵌套的ifram或者Ajax异步请求动态填充的数据需要拿到请求连接再次请求来获取返回的数据

淘宝获取内容,需要登陆;不然获取的text是登录页面的信息;具体的操作是headers里加入完整的user-agent和cookie信息;如下

#登录的user-agent和cookie信息可以在登录taobao后,按F12,在search?q=的标签的headers里找到
hed={
               "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36",
               "cookie":"thw=cn; ??????????????????????????????"
               }
html=requests.get(url,headers=hed)