婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用Selenium實現微博爬蟲(預登錄、展開全文、翻頁)

使用Selenium實現微博爬蟲(預登錄、展開全文、翻頁)

熱門標簽:打印谷歌地圖標注 佛山通用400電話申請 蘇州人工外呼系統軟件 看懂地圖標注方法 京華圖書館地圖標注 電話外呼系統招商代理 淮安呼叫中心外呼系統如何 廣東旅游地圖標注 電話機器人貸款詐騙

前言

在CSDN發的第一篇文章,時隔兩年,終于實現了爬微博的自由!本文可以解決微博預登錄、識別“展開全文”并爬取完整數據、翻頁設置等問題。由于剛接觸爬蟲,有部分術語可能用的不正確,請大家多指正!

一、區分動態爬蟲和靜態爬蟲

1、靜態網頁
靜態網頁是純粹的HTML,沒有后臺數據庫,不含程序,不可交互,體量較少,加載速度快。靜態網頁的爬取只需四個步驟:發送請求、獲取相應內容、解析內容及保存數據。

2、動態網頁
動態網頁上的數據會隨時間及用戶交互發生變化,因此數據不會直接呈現在網頁源代碼中,數據將以Json的形式保存起來。因此,動態網頁比靜態網頁多了一步,即需渲染獲得相關數據。

3、區分動靜態網頁的方法
加載網頁后,點擊右鍵,選中“查看網頁源代碼”,如果網頁上的絕大多數字段都出現源代碼中,那么這就是靜態網頁,否則是動態網頁。

二、動態爬蟲的兩種方法

1.逆向分析爬取動態網頁
適用于調度資源所對應網址的數據為json格式,Javascript的觸發調度。主要步驟是獲取需要調度資源所對應的網址-訪問網址獲得該資源的數據。(此處不詳細講解)

2.使用Selenium庫爬取動態網頁
使用Selenium庫,該庫使用JavaScript模擬真實用戶對瀏覽器進行操作。本案例將使用該方法。

三、安裝Selenium庫及下載瀏覽器補丁

1.Selenium庫使用pip工具進行安裝即可。
2.下載與Chrome瀏覽器版本匹配的瀏覽器補丁。
Step1:查看Chrome的版本


Step2:去下載相應版本的瀏覽器補丁。網址:http://npm.taobao.org/mirrors/chromedriver/
Step3:解壓文件,并將之放到與python.exe同一文件下

四、頁面打開及預登錄

1.導入selenium包

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
import time
import pandas as pd

2.打開頁面

driver = webdriver.Chrome()    
print('準備登陸Weibo.cn網站...')
#發送請求
driver.get("https://login.sina.com.cn/signup/signin.php")
wait = WebDriverWait(driver,5)
#重要:暫停1分鐘進行預登陸,此處填寫賬號密碼及驗證
time.sleep(60)

3.采用交互式運行,運行完上面兩段程序,會彈出一個框,這個框就是用來模擬網頁的交互。在這個框中完成登錄(包括填寫登錄名、密碼及短信驗證等)


4.完成預登錄,則進入個人主頁

五、關鍵詞搜索操作

1.定位上圖中的關鍵詞輸入框,并在框中輸入搜索對象,如“努力學習”

#使用selector去定位關鍵詞搜索框
s_input = driver.find_element_by_css_selector('#search_input')
#向搜索框中傳入字段
s_input.send_keys("努力學習")
#定位搜索鍵
confirm_btn = driver.find_element_by_css_selector('#search_submit')
#點擊
confirm_btn.click()

2.當完成上步的代碼運行后,會彈出新的窗口,從個人主頁跳到微博搜索頁。但是driver仍在個人主頁,需要人為進行driver的移動,將之移動到微博搜索頁。

3.使用switch_to.window()方法移位

#人為移動driver
driver.switch_to.window(driver.window_handles[1])

六、識別“展開全文”并爬取數據

1.了解每個元素的Selector,用以定位(重點在于唯一標識性)

2.使用Selector定位元素,并獲取相應的數據

comment = []
username = []

#抓取節點:每個評論為一個節點(包括用戶信息、評論、日期等信息),如果一頁有20條評論,那么nodes的長度就為20
nodes = driver.find_elements_by_css_selector('div.card > div.card-feed > div.content')

#對每個節點進行循環操作
for i in range(0,len(nodes),1):
    #判斷每個節點是否有“展開全文”的鏈接
    flag = False
    try:
        nodes[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").is_displayed()
        flag = True  
    except:
        flag = False
    
    #如果該節點具有“展開全文”的鏈接,且該鏈接中的文字是“展開全文c”,那么點擊這個要素,并獲取指定位置的文本;否則直接獲取文本
    #(兩個條件需要同時滿足,因為該selector不僅標識了展開全文,還標識了其他元素,沒有做到唯一定位)
    if(flag and nodes[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").text.startswith('展開全文c')):
        nodes[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").click()
        comment.append(nodes[i].find_element_by_css_selector('p[node-type="feed_list_content_full"]').text)
    else:
        comment.append(nodes[i].find_element_by_css_selector('p[node-type="feed_list_content"]').text)
    username.append(nodes[i].find_element_by_css_selector("div.info>div:nth-child(2)>a").text)

七、設置翻頁

1.使用for循環實現翻頁,重點在于識別“下一頁”按鈕,并點擊它

for page in range(49):
    print(page)
    # 定位下一頁按鈕
    nextpage_button = driver.find_element_by_link_text('下一頁')
    #點擊按鍵
    driver.execute_script("arguments[0].click();", nextpage_button)
    wait = WebDriverWait(driver,5)
    #與前面類似
    nodes1 = driver.find_elements_by_css_selector('div.card > div.card-feed > div.content')
    for i in range(0,len(nodes1),1):
        flag = False
        try:
            nodes1[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").is_displayed()
            flag = True
        
        except:
            flag = False
        if (flag and nodes1[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").text.startswith('展開全文c')):
            nodes1[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").click()
            comment.append(nodes1[i].find_element_by_css_selector('p[node-type="feed_list_content_full"]').text)
        else:
            comment.append(nodes1[i].find_element_by_css_selector('p[node-type="feed_list_content"]').text)
        username.append(nodes1[i].find_element_by_css_selector("div.info>div:nth-child(2)>a").text)

八、保存數據

1.使用DataFrame保存字段

data = pd.DataFrame({'username':username,'comment':comment})

2.導出到Excel

data.to_excel("weibo.xlsx")

九、完整代碼

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
import time
import pandas as pd

'''打開網址,預登陸'''
driver = webdriver.Chrome()    
print('準備登陸Weibo.cn網站...')
#發送請求
driver.get("https://login.sina.com.cn/signup/signin.php")
wait = WebDriverWait(driver,5)
#重要:暫停1分鐘進行預登陸,此處填寫賬號密碼及驗證
time.sleep(60)

'''輸入關鍵詞到搜索框,完成搜索'''
#使用selector去定位關鍵詞搜索框
s_input = driver.find_element_by_css_selector('#search_input')
#向搜索框中傳入字段
s_input.send_keys("努力學習")
#定位搜索鍵
confirm_btn = driver.find_element_by_css_selector('#search_submit')
#點擊
confirm_btn.click()

#人為移動driver
driver.switch_to.window(driver.window_handles[1])

'''爬取第一頁數據'''
comment = []
username = []

#抓取節點:每個評論為一個節點(包括用戶信息、評論、日期等信息),如果一頁有20條評論,那么nodes的長度就為20
nodes = driver.find_elements_by_css_selector('div.card > div.card-feed > div.content')

#對每個節點進行循環操作
for i in range(0,len(nodes),1):
    #判斷每個節點是否有“展開全文”的鏈接
    flag = False
    try:
        nodes[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").is_displayed()
        flag = True  
    except:
        flag = False
    
    #如果該節點具有“展開全文”的鏈接,且該鏈接中的文字是“展開全文c”,那么點擊這個要素,并獲取指定位置的文本;否則直接獲取文本
    #(兩個條件需要同時滿足,因為該selector不僅標識了展開全文,還標識了其他元素,沒有做到唯一定位)
    if(flag and nodes[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").text.startswith('展開全文c')):
        nodes[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").click()
        comment.append(nodes[i].find_element_by_css_selector('p[node-type="feed_list_content_full"]').text)
    else:
        comment.append(nodes[i].find_element_by_css_selector('p[node-type="feed_list_content"]').text)
    username.append(nodes[i].find_element_by_css_selector("div.info>div:nth-child(2)>a").text)

'''循環操作,獲取剩余頁數的數據'''
for page in range(49):
    print(page)
    # 定位下一頁按鈕
    nextpage_button = driver.find_element_by_link_text('下一頁')
    #點擊按鍵
    driver.execute_script("arguments[0].click();", nextpage_button)
    wait = WebDriverWait(driver,5)
    #與前面類似
    nodes1 = driver.find_elements_by_css_selector('div.card > div.card-feed > div.content')
    for i in range(0,len(nodes1),1):
        flag = False
        try:
            nodes1[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").is_displayed()
            flag = True
        
        except:
            flag = False
        if (flag and nodes1[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").text.startswith('展開全文c')):
            nodes1[i].find_element_by_css_selector("p>a[action-type='fl_unfold']").click()
            comment.append(nodes1[i].find_element_by_css_selector('p[node-type="feed_list_content_full"]').text)
        else:
            comment.append(nodes1[i].find_element_by_css_selector('p[node-type="feed_list_content"]').text)
        username.append(nodes1[i].find_element_by_css_selector("div.info>div:nth-child(2)>a").text)

'''保存數據'''
data = pd.DataFrame({'username':username,'comment':comment})
data.to_excel("weibo.xlsx")

到此這篇關于使用Selenium實現微博爬蟲(預登錄、展開全文、翻頁)的文章就介紹到這了,更多相關Selenium 微博爬蟲 內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 基于python requests selenium爬取excel vba過程解析
  • Python + selenium + requests實現12306全自動搶票及驗證碼破解加自動點擊功能
  • 如何使用selenium和requests組合實現登錄頁面
  • python selenium實現智聯招聘數據爬取
  • Python+Selenium定位不到元素常見原因及解決辦法(報:NoSuchElementException)
  • python+selenium小米商城紅米K40手機自動搶購的示例代碼
  • python爬蟲之利用Selenium+Requests爬取拉勾網

標簽:呼和浩特 駐馬店 畢節 湖州 股票 江蘇 中山 衡水

巨人網絡通訊聲明:本文標題《使用Selenium實現微博爬蟲(預登錄、展開全文、翻頁)》,本文關鍵詞  使用,Selenium,實現,微博,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用Selenium實現微博爬蟲(預登錄、展開全文、翻頁)》相關的同類信息!
  • 本頁收集關于使用Selenium實現微博爬蟲(預登錄、展開全文、翻頁)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产亚洲欧美日韩在线一区| 国产视频911| 宅男在线国产精品| 中文字幕亚洲视频| 91影院在线免费观看| 国产精品久久久久久久久久免费看| 激情文学综合丁香| 欧美经典三级视频一区二区三区| 久久99最新地址| 精品久久久久久久久久久久包黑料| 日本强好片久久久久久aaa| 91精品国产综合久久久蜜臀粉嫩 | 欧美日韩精品免费| 亚洲男人电影天堂| 在线中文字幕一区| 久久国产精品72免费观看| 2024国产精品| 日本丰满少妇一区二区三区| 丝袜诱惑制服诱惑色一区在线观看| 欧美性感一类影片在线播放| 日本午夜一区二区| 久久亚洲综合色一区二区三区| 久久精品国产色蜜蜜麻豆| 日韩一区二区免费在线观看| 成人伦理片在线| 午夜精品久久一牛影视| 欧美天堂亚洲电影院在线播放| 一区二区三区电影在线播| 日韩精品中文字幕在线不卡尤物| 成人网男人的天堂| 日韩影院免费视频| 国产日韩精品一区二区三区| 日本韩国一区二区| 韩国成人福利片在线播放| 亚洲一区二区综合| 18涩涩午夜精品.www| 亚洲精品一区二区三区在线观看| 91激情在线视频| 懂色av中文字幕一区二区三区| 日本一不卡视频| 国产精品国产a| 欧美sm极限捆绑bd| 777xxx欧美| 日本乱人伦aⅴ精品| 福利91精品一区二区三区| 三级影片在线观看欧美日韩一区二区| 国产精品久久久久久户外露出| 欧美一区二区三区视频免费播放| 色综合久久久久综合体桃花网| 国产精品亚洲视频| 麻豆国产精品一区二区三区| 亚洲最新视频在线观看| 亚洲免费在线看| ...av二区三区久久精品| 日本一区免费视频| 久久一区二区三区四区| 日韩欧美国产系列| 555夜色666亚洲国产免| 成人免费视频一区二区| 国产大陆亚洲精品国产| 国产精品一区二区在线播放| 国产一二精品视频| 国产黄色精品网站| 成人福利视频在线看| gogogo免费视频观看亚洲一| 成人综合在线视频| 99在线精品一区二区三区| 国产999精品久久久久久| 高清国产一区二区| 91网站最新地址| 欧美丝袜自拍制服另类| 欧美另类一区二区三区| 欧美一区二区三区日韩视频| 精品少妇一区二区三区在线视频| 久久影院视频免费| 亚洲欧洲精品一区二区三区不卡| 一区二区三区国产精华| 日韩高清在线观看| 黄页网站大全一区二区| 成人黄色小视频在线观看| 色噜噜狠狠成人网p站| 欧美日韩精品一区二区三区四区| 欧美日韩国产影片| 久久综合九色综合欧美亚洲| 国产精品久久久久一区二区三区共| 久久精品夜夜夜夜久久| 中文字幕视频一区| 日韩精品成人一区二区在线| 国产福利一区在线| 91精品办公室少妇高潮对白| 日韩免费观看高清完整版在线观看 | 亚洲无人区一区| 亚洲午夜三级在线| 免费视频一区二区| 白白色 亚洲乱淫| 欧美日韩国产小视频在线观看| 欧美日韩国产另类一区| 国产婷婷色一区二区三区在线| 国产精品日韩精品欧美在线| 亚洲一区二区四区蜜桃| 久久国产乱子精品免费女| 成人av小说网| 欧美色手机在线观看| 日韩欧美第一区| 亚洲日韩欧美一区二区在线| 加勒比av一区二区| 懂色av一区二区三区免费看| 欧美一a一片一级一片| 欧美日韩成人一区二区| 国产精品五月天| 美女视频网站久久| 91在线观看免费视频| 欧美日韩国产不卡| 亚洲手机成人高清视频| 国产一区在线视频| 欧美不卡一二三| 日韩精品高清不卡| 欧美色欧美亚洲另类二区| 国产精品成人一区二区艾草 | 日韩午夜精品电影| 亚洲裸体xxx| 国内精品免费**视频| 欧美高清视频不卡网| 亚洲自拍欧美精品| 色婷婷综合久久久久中文一区二区| 久久亚洲捆绑美女| 久久草av在线| 欧美一区二区三区日韩视频| 午夜欧美一区二区三区在线播放| 99久久99久久精品国产片果冻 | 精品国产一区二区三区久久久蜜月 | 极品尤物av久久免费看| 88在线观看91蜜桃国自产| 曰韩精品一区二区| 在线亚洲免费视频| 亚洲成国产人片在线观看| 欧美丝袜丝交足nylons图片| 亚洲成人动漫在线免费观看| 欧美日韩高清不卡| 秋霞影院一区二区| 日韩久久久精品| 国产在线播放一区二区三区| 久久影院电视剧免费观看| 国产在线精品国自产拍免费| 久久久久国产精品麻豆ai换脸 | 男女男精品视频| 日韩视频一区二区三区| 奇米777欧美一区二区| 精品久久久久av影院| 国产毛片一区二区| 中文字幕中文在线不卡住| 97se亚洲国产综合自在线观| 亚洲一线二线三线视频| 欧美日韩一区二区在线观看| 免费在线看成人av| 久久久不卡网国产精品一区| 99久久精品情趣| 亚洲一区欧美一区| 8x8x8国产精品| 国产suv精品一区二区6| 一区在线观看免费| 欧美日韩大陆一区二区| 久久精品国产亚洲高清剧情介绍| 国产偷v国产偷v亚洲高清| 不卡av在线免费观看| 亚洲国产乱码最新视频| 日韩欧美中文字幕精品| 国产成人免费在线观看| 自拍偷拍国产亚洲| 欧美一区二区三区日韩视频| 国产91富婆露脸刺激对白| 亚洲综合免费观看高清在线观看| 欧美电影免费提供在线观看| 97久久精品人人澡人人爽| 秋霞电影网一区二区| 国产亚洲精品aa| 欧美人伦禁忌dvd放荡欲情| 精品一区二区av| 一区二区三区高清不卡| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲女爱视频在线| 欧美岛国在线观看| 在线视频你懂得一区| 国产成人免费视频网站 | 亚洲风情在线资源站| 日韩精品一区二区三区swag| 色综合久久综合网| 国产成人精品www牛牛影视| 日韩激情一区二区| 一区二区三区在线看| 国产三级精品在线| 精品日韩av一区二区| 一本大道久久a久久综合婷婷| 国产综合成人久久大片91| 亚洲成av人在线观看| 综合中文字幕亚洲| 欧美激情一区三区| 久久一日本道色综合| 日韩女优av电影在线观看| 666欧美在线视频|