欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python selenium爬取微博數(shù)據(jù)代碼實例

 更新時間:2020年05月22日 10:51:25   作者:djl_djl  
這篇文章主要介紹了Python selenium爬取微博數(shù)據(jù)代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

爬取某人的微博數(shù)據(jù),把某人所有時間段的微博數(shù)據(jù)都爬下來。

具體思路:

創(chuàng)建driver-----get網(wǎng)頁----找到并提取信息-----保存csv----翻頁----get網(wǎng)頁(開始循環(huán))----...----沒有“下一頁”就結(jié)束,

用了while True,沒用自我調(diào)用函數(shù)

嘟大海的微博:https://weibo.com/u/1623915527

辦公室小野的微博:https://weibo.com/bgsxy

代碼如下

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import csv
import os
import time
 
#只有這2個參數(shù)設(shè)置,想爬誰的微博數(shù)據(jù)就在這里改地址和目標csv名稱就行
weibo_url = 'https://weibo.com/bgsxy?profile_ftype=1&is_all=1#_0'
csv_name = 'bgsxy_allweibo.csv'
 
def start_chrome():
  print('開始創(chuàng)建瀏覽器')
  driver = webdriver.Chrome(executable_path='C:/Users/lori/Desktop/python52project/chromedriver_win32/chromedriver.exe')
  driver.start_client()
  return driver
 
def get_web(url):   #獲取網(wǎng)頁,并下拉到最底部
  print('開始打開指定網(wǎng)頁')
  driver.get(url)
  time.sleep(7)
  scoll_down()
  time.sleep(5)
 
def scoll_down():  # 滾輪下拉到最底部
  html_page = driver.find_element_by_tag_name('html')
  for i in range(7):
    print(i)
    html_page.send_keys(Keys.END)
    time.sleep(1)
 
def get_data():
  print('開始查找并提取數(shù)據(jù)')
  card_sel = 'div.WB_cardwrap.WB_feed_type'
  time_sel = 'a.S_txt2[node-type="feed_list_item_date"]'
  source_sel = 'a.S_txt2[suda-uatrack="key=profile_feed&value=pubfrom_guest"]'
  content_sel = 'div.WB_text.W_f14'
  interact_sel = 'span.line.S_line1>span>em:nth-child(2)'
 
  cards = driver.find_elements_by_css_selector(card_sel)
  info_list = []
 
  for card in cards:
    time = card.find_elements_by_css_selector(time_sel)[0].text #雖然有可能在一個card中有2個time元素,我們?nèi)〉谝粋€就對
    if card.find_elements_by_css_selector(source_sel):
      source = card.find_elements_by_css_selector(source_sel)[0].text
    else:
      source = ''
    content = card.find_elements_by_css_selector(content_sel)[0].text
    link = card.find_elements_by_css_selector(time_sel)[0].get_attribute('href')
    trans = card.find_elements_by_css_selector(interact_sel)[1].text
    comment = card.find_elements_by_css_selector(interact_sel)[2].text
    like = card.find_elements_by_css_selector(interact_sel)[3].text
    info_list.append([time,source,content,link,trans,comment,like])
 
  return info_list
 
def save_csv(info_list,csv_name):
  csv_path = './' + csv_name
  print('開始寫入csv文件')
  if os.path.exists(csv_path):
    with open(csv_path,'a',newline='',encoding='utf-8-sig') as f: #newline=''避免空行;encoding='utf-8-sig'比utf8牛,保存中文沒問題
      writer = csv.writer(f)
      writer.writerows(info_list)
  else:
    with open(csv_path,'w+',newline='',encoding='utf-8-sig') as f:
      writer = csv.writer(f)
      writer.writerow(['發(fā)布時間','來源','內(nèi)容','鏈接','轉(zhuǎn)發(fā)數(shù)','評論數(shù)','點贊數(shù)'])
      writer.writerows(info_list)
  time.sleep(5)
 
def next_page_url():
  next_page_sel = 'a.page.next'
  next_page_ele = driver.find_elements_by_css_selector(next_page_sel)
  if next_page_ele:
    return next_page_ele[0].get_attribute('href')
  else:
    return None
 
 
driver = start_chrome()
input('請在chrome中登錄weibo.com')   # 暫停程序,手動登錄weibo.com
 
while True:
  get_web(weibo_url)
  info_list = get_data()
  save_csv(info_list,csv_name)
  if next_page_url():
    weibo_url = next_page_url()
  else:
    print('爬取結(jié)束')
    break

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python 樹表查找(二叉排序樹、平衡二叉樹)

    Python 樹表查找(二叉排序樹、平衡二叉樹)

    本文并不會深入講解樹數(shù)據(jù)結(jié)構(gòu)的基本的概念,僅是站在使用的角度說清楚動態(tài)查詢。閱讀此文之前,請預備一些樹的基礎(chǔ)知識。
    2023-01-01
  • 一文實現(xiàn)刪除numpy數(shù)組中的指定索引元素

    一文實現(xiàn)刪除numpy數(shù)組中的指定索引元素

    在Python中,Numpy是一個強大的數(shù)學庫,用于處理大型多維數(shù)組和矩陣的數(shù)學運算,數(shù)組是由相同類型的數(shù)據(jù)元素組成的集合,并且每個元素都可以通過索引進行訪問,本文將給大家介紹如何刪除numpy數(shù)組中的指定索引元素,需要的朋友可以參考下
    2024-05-05
  • python導入時小括號大作用

    python導入時小括號大作用

    這篇文章主要介紹了python導入時小括號的大作用,非常的簡單實用,希望這個小技巧能夠幫到大家
    2017-01-01
  • python中networkx函數(shù)的具體使用

    python中networkx函數(shù)的具體使用

    本文主要介紹了python中networkx函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Python批量修改文件名案例匯總

    Python批量修改文件名案例匯總

    在文件管理和數(shù)據(jù)處理中,批量修改文件名是一項常見且重要的任務,Python作為一種功能強大的編程語言,提供了豐富的庫和工具來簡化這一過程,本文將結(jié)合實際案例,詳細介紹如何通過Python批量修改文件名,需要的朋友可以參考下
    2024-08-08
  • Python中二維列表如何獲取子區(qū)域元素的組成

    Python中二維列表如何獲取子區(qū)域元素的組成

    這篇文章主要給大家介紹了Python中二維列表是如何獲取子區(qū)域元素的組成,文中給出了詳細的介紹和示例代碼,相信對大家的理解和學習具有一定的參考借鑒價值,有需要的朋友們下面來一起看看吧。
    2017-01-01
  • Python安裝Graphviz?超詳細圖文教程

    Python安裝Graphviz?超詳細圖文教程

    這篇文章主要介紹了Python安裝Graphviz?詳細教程,在Python安裝Graphviz畫圖器,首先要明確他是一個獨立的軟件,如果大家用pip的方法裝了graphviz可以先卸載,本文通過圖文并茂的形式詳細講解,需要的朋友參考下吧
    2023-02-02
  • python實現(xiàn)文件的分割與合并

    python實現(xiàn)文件的分割與合并

    這篇文章主要為大家詳細介紹了python實現(xiàn)文件的分割與合并,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Python 調(diào)用PIL庫失敗的解決方法

    Python 調(diào)用PIL庫失敗的解決方法

    今天小編就為大家分享一篇Python 調(diào)用PIL庫失敗的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python openpyxl庫處理Excel文件高級應用技巧實例

    Python openpyxl庫處理Excel文件高級應用技巧實例

    openpyxl是一個用于處理Excel文件的Python庫,它提供了豐富的功能,使得用戶能夠輕松地讀取、寫入和操作Excel文件,而不需要依賴于Microsoft Excel軟件,作為一個開源項目,openpyxl在Python生態(tài)系統(tǒng)中得到了廣泛的應用,成為處理Excel數(shù)據(jù)的首選工具之一
    2024-01-01

最新評論