爬取東方財富股吧中評論資料
東方財富股吧是有反爬取機制的,我們通過減慢爬取速率的方法來避免爬取檢測。這種方法爬取網頁資料的速率很慢,並不會對網站的訪問造成影響,當然我們可以改進方法,使得爬取資料更快。但並不鼓勵大家非法爬取資料,只用作學習交流。
直接上程式碼吧:
import requests
from bs4 import BeautifulSoup
import time
import random
import csv # 匯入CSV安裝包
#f = open('test.csv', 'w', encoding='utf-8')
f = open('comment.csv', 'w', newline="") #建立檔案物件
csv_writer = csv.writer(f) #基於檔案物件構建 csv寫入物件
csv_writer.writerow(["序號", "commentId", "text", "userId", "date", "likeCount", "fans"])
count = 0
def getHtml(url):#下載網頁原始碼
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; LCTE; rv:11.0) like Gecko'}
try:
r = requests.get(url,headers=header)
r.encoding = 'utf-8'
#print(r.status_code)
r.raise_for_status()
return r.text
except:
getHtml(url)
# region 隨機延時
# 固定延時x秒
def delay_x_0_s(fixed_delay_num):
x = float(fixed_delay_num)
time.sleep(x)
# 隨機延時 0~y 秒
def delay_0_y_s(random_delay_num):
y = float(random_delay_num)
time.sleep(random.random() * y)
# 先固定延時x秒,再隨機延時 0~y 秒
# 延時區間,包前不包後
def delay_x_y_s(fixed_delay_num, random_delay_num):
delay_x_0_s(fixed_delay_num)
delay_0_y_s(random_delay_num)
# 隨機延時 x~y 秒
# 延時區間,包前不包後
def delay_between_x_y_s(start_delay_num, end_delay_num):
x = float(start_delay_num)
y = float(end_delay_num)
delay_x_0_s(x)
delay_0_y_s(y - x)
for page in range(100, 1001):
delay_between_x_y_s(2, 5)
url = "http://guba.eastmoney.com/list,zssh000001,f_" + str(page) + ".html"
print(url)
# url = 'http://guba.eastmoney.com/list,zssh000001,f_1.html'
html = getHtml(url)
soup = BeautifulSoup(html, "html.parser")
#print(soup)
contain = soup.find_all("div", {"class": "articleh"}) #獲取存有資料的div標籤,存在contain中,因為一個頁面有多條評論,所以contain是一個列表。
for i in contain[:]: #遍歷contain
try:
delay_between_x_y_s(2, 5)
content = i.find("span", {"class": "l3 a3"}).find("a") #獲取一個div便籤中第三個span標籤下的a標籤,其有href和title兩個屬性
print(content)
contentUrl = "http://guba.eastmoney.com"+content["href"] #content["href"]是該評論的詳細介面網址,因為其是相對地址,所以需要在前新增網址的字首,得到完整的介面網址
print("contentUrl: " + contentUrl + "\n")
commentId = content["href"][-14:-5] #我們觀察content["href"]屬性的值,發現其是具有規則的字串,從該字串的倒數第14個位置到倒數第5個位置是該條評論的id
print("commentId: " + commentId + "\n")
text = content.attrs["title"] #獲取評論文字(標題)
print("text: " + text + "\n")
userUrl = i.find("span", {"class": "l4 a4"}).find("a").attrs["href"] #用同樣的方法獲取使用者主頁連結
if userUrl == "/list,cjpl.html":
continue
print("userUrl: " + userUrl + "\n")
userId = userUrl[23:] #獲取使用者ID
if userId == "": #跳過討論帖子
continue
if userId == "3006113720930996": #跳過股吧賬號
continue
if userId == "/3006113720930996":
continue
if userId == "7428111481466798":
continue
if userId == "6712111507146464":
continue
if userId == "6255325874333310":
continue
print("userId: " + userId + "\n")
delay_between_x_y_s(2, 5)
commentHtml = getHtml(contentUrl) # 獲取評論詳細資訊原始碼
#print("commentHtml: " + commentHtml + "\n")
soup = BeautifulSoup(commentHtml, "html.parser")
#print(soup)
date = soup.find("div", {"class": "zwfbtime"}).text[4:14] # 獲取評論發表時間
print("date: " + date + "\n")
#if date == "2020-07-01":
# continue
likeCount = int(soup.find("div", {"data-like_count": True}).attrs['data-like_count']) # 獲取評論點贊數,並轉換成整數型別。(因為從html中獲取會認為是字串型別)
print("likeCount: ", likeCount, "\n")
#likeCount = int(soup.find("div", {"data-like_count": True}).attrs['data-like_count'])
#print(likeCount)
delay_between_x_y_s(2, 5)
userHtml = getHtml(userUrl) # 獲取使用者主頁原始碼
soup = BeautifulSoup(userHtml, "html.parser")
#print(soup)
fans = int(soup.find("a", {"id": "tafansa"}).find("span").text) # 獲取使用者粉絲數
print("fans: ", fans, "\n")
count = count + 1
csv_writer.writerow([count, commentId, text, userId, date, likeCount, fans])
except:
print('出現異常,繼續檢視下一篇文章')
continue
f.close()
相關文章
- 如何利用 Selenium 爬取評論資料?
- 東方財富財報:2023年Q3東方財富實現營收27.38億元 同比減少15.83%營收
- 爬取天貓商品評論
- 房產資料爬取、智慧財產權資料爬取、企業工商資料爬取、抖音直播間資料python爬蟲爬取Python爬蟲
- 爬蟲實踐之獲取網易雲評論資料資訊爬蟲
- 利用釘釘機器人API傳送東方財富交易資訊機器人API
- 東方財富:2019年度最佳分析師榜單
- 京東商品評論資料介面,電商平臺評論介面,行業商品評論資料介面程式碼封裝教程行業封裝
- 大眾點評餐飲資料爬取(2020.11)
- 【Python爬蟲實戰】使用Selenium爬取QQ音樂歌曲及評論資訊Python爬蟲
- feapder框架爬取ks評論_遞迴的方式框架遞迴
- python 爬取騰訊視訊的全部評論Python
- 終於打通了 QMT 東方財富實盤大賽 調倉跟蹤
- 微博爬取長津湖博文及評論
- Python爬蟲爬取淘寶,京東商品資訊Python爬蟲
- Python爬取貓眼評分9.5的《海王》的3萬條評論Python
- python 爬蟲實戰專案--爬取京東商品資訊(價格、優惠、排名、好評率等)Python爬蟲
- 【python爬蟲案例】利用python爬取豆瓣電影TOP250評分排行資料!Python爬蟲
- 九方財富衝上市,股民血虧急退費
- IMI:2023年中國財富管理能力評價報告
- Python爬蟲入門教程 33-100 《海王》評論資料抓取 scrapyPython爬蟲
- 東方甄選財報:2024財年東方甄選營收約70.73億元 同比增長56.8%營收
- 新東方財報:2018財年Q3新東方營收6.18億美元 同比增長41%營收
- 大眾點評商家爬取
- 諾亞財富:2018中國高淨值人群財富白皮書
- API 獲取商品評論?API
- 爬蟲爬取資料如何繞開限制?爬蟲
- 網易雲音樂評論爬蟲(2):歌曲的全部評論爬蟲
- 新東方財報:2024財年Q1新東方淨營收11億美元 同比增長47.7%營收
- 東方甄選財報:2024財年中期東方甄選總營收27.95億元 同比增長34.4%營收
- Python:爬取疫情每日資料Python
- Puppeteer爬取網頁資料網頁
- 同花順資料爬取
- Scrapy爬蟲(6)爬取銀行理財產品並存入MongoDB(共12w+資料)爬蟲MongoDB
- 【python爬蟲案例】利用python爬取豆瓣讀書評分TOP250排行資料Python爬蟲
- 資料視覺化(一)A股三大指數10年漲跌幅比較:資料爬取和整理視覺化
- 淘寶商品評論資料介面,電商平臺評論介面,行業商品評論資料介面程式碼封裝教程行業封裝
- 專訪中歐財富伍春蘭:財富管理行業數字化轉型升級,資料庫如何選型?行業資料庫