日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python获取网页源码不完整_python和Ajax在一起了?真的???

發布時間:2024/10/5 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python获取网页源码不完整_python和Ajax在一起了?真的??? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Ajax動態網頁加載爬取新浪微博某關鍵詞下的信息

前言

有些時候我們使用瀏覽器查看頁面正常顯示的數據與使用requests抓取頁面html得到的數據不一致,這是因為requests獲取的是原始的HTML文檔,而瀏覽器中的頁面是經過JavaScript處理數據后的結果。這些處理過的數據可能是通過Ajax加載的,可能包含HTML文檔中,可能經過特定算法計算后生成的。

一、Ajax原理

1、什么是Ajax?
Ajax全稱為Asynchronous JavaScript and XML,即為異步的JavaScript(JS語言)和XML(萬能的數據傳輸格式)。2、異步化?
Ajax的工作原理相當于在用戶和服務器之間加了—個中間層(AJAX引擎),使用戶操作與服務器響應異步化。并不是所有的用戶請求都提交給服務器。像—些數據驗證和數據處理等都交給Ajax引擎自己來做,只有確定需要從服務器讀取新數據時再由Ajax引擎代為向服務器提交請求它能夠利用,JavaScript在保證不被刷新,連接不變的情況下,服務器交換數據并更新部分網頁的技術。像傳統的網頁(不使用Ajax)若要更新網頁內容,必須重新加載網頁,比如貓眼、豆瓣等。下圖為對比圖:

3、示例
瀏覽網頁的時候,我們發現很多網頁都有下滑查看更多的選項。比如,就拿新浪微博主頁來說。一直往下滑,看到幾個微博之后就沒有了,而是會出現一個加載的動畫,很快就出現了新的微博內容,這個過程就是Ajax加載的過程

二、準備環境+爬取網站

ananconda3——spyder
谷歌瀏覽器
https://m.weibo.cn/

三、網頁分析與定位

1、本次爬取選取“奪冠”這一關鍵詞

2、檢查元素——Network——XHR——Ctrl+R

3、滑動頁面,依次查看前三頁page,Request URL中包含多個參數

選了前三頁觀察,發現在Request URL里面除了最后page=2,page=3,其他參數都不發生變化

4、觀察Preview里面的信息

想要獲取的信息都在data——cards——mblog下面


分別查詢三個頁面發現,只有在第一頁中時,有些cards下面不存在mblog,也就是說爬出來的內容可能會為空,所以本次爬取我舍去第一頁內容不全的,從page=2開始,這樣可以保證爬出來的內容比較全。

三、代碼實現

1、導入庫

from urllib.parse import urlencodeimport requestsimport json

使用urlencode主要用于正常識別輸入的漢字、空格以及其他特殊字符,由于url中傳入了部分參數,所以需識別參數拼接為完整的url
輸出格式為對象格式:{“key1”:obj,“key2”:obj,“key3”:obj…},所以導入json包2、解析頁面
定義一個獲取頁面的函數,其中的參數params包含如下所示


除了page以外,其他參數均不變。定義一個base_url,所有網頁的base_url為同一個。

base_url='https://m.weibo.cn/api/container/getIndex?'

這里需要用到urlencode對參數進行轉化拼接,使其轉化并生成出每一頁完整的url

def get_page(page): params = { 'containerid':'231522type=1&t=10&q=#奪冠#', 'page_type':'searchall', 'isnewpage':'1', 'luicode':'10000011', 'lfid':'100103type=38&q=奪冠&t=0', 'page_type': 'searchall', 'page':page } url = base_url + urlencode(params) try: rq = requests.get(url,headers = headers) if rq.status_code == 200 : return rq.json() except rq.ConnectionError as e: print('程序錯誤',e.args)

3、定位id和raw_text第一個函數返回rq.json(),目的是獲取如下界面的全部解析碼print(re.json())后,輸出全部內容j = get_page(page)返回那個解析頁面,從解析頁面里面找data——cards,items為cards下面所有的東西,我只想獲得mblog下的id和raw_text,所以用了一個循環。先找到mblog用item接收,再再item下找到id用id接收,再找raw_text用raw_text接收,用append進行列表的依次添加,得到 all_id和all_raw_text。最后轉化為字典形式

def parse_page(j): items = j['data']['cards'] all_id=[] all_raw_text=[] for item in items: item = item['mblog'] id=item['id'] raw_text=item['raw_text'] all_id.append(id) all_raw_text.append(raw_text) weibo = dict(zip(all_id,all_raw_text)) #zip,將兩個列表合并成一個字典 return weibo

4、存入txt文件存入為json格式

def write_text(result): with open('關鍵詞信息.txt','a',encoding='utf-8') as f: f.write(json.dumps(result, ensure_ascii=False) + '\n') f.write('\n') f.close()

5、主函數調用
Referer,User-Agent,X-Reuestes-With均在網頁里

if __name__ == '__main__': base_url = 'https://m.weibo.cn/api/container/getIndex?' headers = {"Referer": 'https://m.weibo.cn/search?containerid=100103type%3D1%26q%3D%E5%A4%BA%E5%86%A0', "User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36', "X-Requested-With":'XMLHttpRequest'} for page in range(2,50): j = get_page(page) result = parse_page(j) print(result) write_text(result)

四、結果展示

每個id對應一條微博信息

歡迎關注公眾號:Python爬蟲數據分析挖掘

記錄學習python的點點滴滴;

回復【開源源碼】免費獲取更多開源項目源碼;

公眾號每日更新python知識和【免費】工具;

本文已同步到【開源中國】、【騰訊云社區】、【CSDN】;

總結

以上是生活随笔為你收集整理的python获取网页源码不完整_python和Ajax在一起了?真的???的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 蜜臀精品一区二区三区 | 噼里啪啦动漫高清在线观看 | 杨幂国产精品一区二区 | 日本青青草视频 | 超碰在线观看99 | 久久久水蜜桃 | 免费av在线网站 | 久久av一区二区三区 | 五月天综合婷婷 | 成人久久久精品国产乱码一区二区 | 日韩欧美国产三级 | 国产精品自拍99 | 韩国av一区 | 国产精久久久久久 | 国产精品亚洲二区在线观看 | 小明成人免费视频 | 少妇人妻好深好紧精品无码 | 黄频在线免费观看 | 中文字幕码精品视频网站 | 天天视频黄色 | 先锋影音av资源站 | 一色屋免费视频 | 成人在线免费看视频 | 国产精品偷拍 | 91丝袜呻吟高潮美腿白嫩在线观看 | 性农村xxxxx小树林 | 免费久久av | 最新黄色av网址 | 欧美性区 | 国产美女激情 | 国产 欧美 精品 | 亚洲另类春色 | 91在线观看网站 | 国产黄色美女视频 | 久久亚洲美女 | 免费国产黄色片 | 一区二区三区国产在线观看 | 三上悠亚激情av一区二区三区 | 丝袜av网站| 欧美成网站 | 全国男人的天堂网 | 国产精品一区二区三区久久 | 人妻精品一区一区三区蜜桃91 | 久操视频免费看 | 精品成人在线 | 日本a在线天堂 | 啪啪小视频 | 美女洗澡无遮挡 | 青娱乐极品视频在线 | 国产av天堂无码一区二区三区 | 久久短视频 | 少妇精品视频 | 亚欧美精品 | www.四虎影视| 牛牛影视一区二区三区 | 激情二区 | 欧美gv在线 | 尤物在线观看 | 免费成人高清在线视频 | 日日日干干干 | 中文字幕成人在线观看 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产欧美日韩 | 色窝网| 18一20岁毛毛片 | 黄色永久视频 | 亚洲精品视频免费在线观看 | 国产乱码精品一区二三赶尸艳谈 | 九九色播| 9.1在线观看免费 | 老子午夜影院 | 亚洲激情二区 | 国产精品国产三级国产aⅴ浪潮 | 久久涩| 欧美一级片在线视频 | 日韩在线观看av | 亚洲色图21p | 国产成人精品白浆久久69 | 播放黄色一级片 | 欧美日韩在线影院 | 日韩一区久久 | 久久久久久久久久一区二区三区 | 黄色一区二区视频 | 亚洲高清视频一区 | 久久久久网站 | 激情久久网 | 真实偷拍激情啪啪对白 | 青娱乐国产视频 | 一区二区三区91 | 操操日 | jizzjizz在线播放| 日韩高清欧美 | 中文字幕精品三级久久久 | 香蕉久热 | 国产大学生自拍视频 | 精品黑人一区二区三区观看时间 | 日韩国产中文字幕 | 日韩免费高清视频 | 国产在线视频网 |