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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

某网站内容获取

發布時間:2023/12/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 某网站内容获取 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

準備工作

import re #正則表達式 import requests #獲取頁面信息 import pandas as pd #數據處理 import time

頁面分析

直接get無法獲得任何信息, 我們采取另一種思路:

來到network, 查看ajax請求, 同時下拉搜索內容

可以看到, 當不斷下拉刷新內容時, 產生了形如https://m.weibo.cn/api/container/getIndex?containerid=100103type%3D1%26q%3D%E6%96%B0%E7%96%86%E6%97%85%E6%B8%B8&page_type=searchall&page=5的xhr文件, 且在當我們想要瀏覽新的內容時才會發送這個請求, 那么我們是否需要先手動下滑頁面再請求xhr文件?答案是否定的, 因為經常做爬蟲的人就會發現上述url有一個顯著的特征: page=5. 因此我們只需求改page中的數字即可.
實際上, 我們也可以先訪問這個url, 觀察是否存在著我們需要的內容.

顯然這是js代碼, 且非常混亂, 我們可以通過這個網站將js代碼格式化(在線js格式化).

將js內容復制到該網站并點擊格式化校驗Unicode轉中文, 就可以得到格式化的js代碼

可以看到, 諸如此類的內容就表達了一位用戶的id、內容(text)、內容長度(textLength)等等.

Code

  • 完整代碼
import re import requests import pandas as pd import time#headers中一定要帶入自己的cookie和user-agent否則會403 headers = { 'User-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36', 'Cookie' : 'SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9W5Mjupe16Kiyb7vm281Dcv85NHD95QfSo.Neo2peKn0Ws4DqcjiKgLu9-DadJH0; SUB=_2A25MhkCXDeRhGeNI4lUT8S_Nwz-IHXVviWDfrDV6PUJbktCOLRDFkW1NS--oPUYVkqHq8aiZOlUnWJs3Mwsd7vcO; SSOLoginState=1635922120; WEIBOCN_FROM=1110006030; MLOGIN=1; BAIDU_SSP_lcr=http://localhost:8888/; _T_WM=25310073472; XSRF-TOKEN=ccf606; M_WEIBOCN_PARAMS=oid%3D4698870880408410%26luicode%3D10000011%26lfid%3D231522type%253D1%2526t%253D10%2526q%253D%2523%25E6%2596%25B0%25E7%2596%2586%25E6%2597%2585%25E6%25B8%25B8%2523', '_xsrf' : 'ccf606'} main = "https://m.weibo.cn/api/container/getIndex?containerid=231522type%3D1%26t%3D10%26q%3D%23%E6%96%B0%E7%96%86%E6%97%85%E6%B8%B8%23&isnewpage=1&luicode=10000011&lfid=100103type%3D1%26q%3D%E6%96%B0%E7%96%86%E6%97%85%E6%B8%B8&page_type=searchall&page=" number = [] url = [] n = 10 for i in range(1, n):url.append(main + str(i))count = 0 code = [] URL = [] NEW = [] for Url in url:res = requests.get(Url, headers=headers)count += 1print("第{0}次請求, 頁面狀態碼:{1}".format(count, res.status_code)) print("地址:{0}".format(Url))code.append(res.status_code)URL.append(Url)for i in range(20):try:string = res.json()["data"]['cards'][i]["mblog"]["text"] #正文內容被保存在以下標簽中 #通過正則表達式提取str中的中文pre = re.compile(u'[\u4e00-\u9fa5-\,\。]') #設定提取中文、標點符號的規則res = re.findall(pre, string) #按上述規則進行查找res1=''.join(res) res1.split("-") #查詢結果會帶有--, 因此將其分割開newlist = [i for i in res1.split("-") if i != ''] #分割后的列表存在空值, 去除列表中的空值NEW.append(newlist)print(newlist)except:passtime.sleep(1.5) #加入休眠, 實踐證明, 小于1.5s的休眠在100次爬取時就會403. data = {"code":code, "URL":URL, "content": NEW} #將爬取結果存為字典以便導出 pd = pd.DataFrame(data) pd.to_excel("D://Desktop//weibo.xlsx") #將結果保存為excel表格, 因為帶有中文csv格式通常中文會亂碼
  • 爬取結果

總結

以上是生活随笔為你收集整理的某网站内容获取的全部內容,希望文章能夠幫你解決所遇到的問題。

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