當前位置:首頁 » 編程語言 » python自動評論

python自動評論

發布時間: 2022-05-09 01:31:41

1. python語言能做什麼它應用在那方面

Python是一種支持面向對象的解釋性高級語言,Simple yet Powerful是人們對它的一致評價。它包含多種Programming Paradigm,包括Object-Oriented Programming,Procere Programming等。Python類似於Javascript,可以寫出很短小但是功能強大的小程序,而Python豐富的標准庫(包括系統庫, __builtin__,以及完全支持正則表達式的字元串操作)為實現這些實用功能提供了堅實的基礎。Python類似於C++和Java,它是一個完全支持面向對象的語言(支持多繼承),但是它的語法更靈活,支持Dynamic Typing,變數從來不用進行聲明便可使用,通常情況下Python的代碼密度是C++的5到10倍,是Java的5倍左右。Python採用嚴格的縮進方式來管理代碼,提高了可讀性,極大的降低了代碼維護的代價。Python自身包含Gargage Collection和內存管理機制,用戶無需費心這些細節問題。Python支持Interactive Programming。 Python的運行時效率很高,卻足以支持復雜的高層數據結構。Python是一種理想的Glue Language,也就是說我們可以用它來完成一般腳本編程所能完成的任務。你甚至還能把Python的Interactive Shell作為一個計算器來用,而從來不用擔心上溢和下溢導致系統崩潰(上溢一般不會發生,即便你計算2的100000次方都沒有問題,下溢則會拋出異常)。可以說,Python是一個滲透了多種計算機語言特性的極佳的設計。在Python Shell裡面鍵入import this,Shell將輸出Python最核心的一些設計理念:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
從這些抽象的概念出發,很難直接對應到Python這樣一個如此具體的語言。但是在真正的學習過程中,不斷回頭看看這些原則性的東西,的確會有所領悟,會能理解為什麼 Python被設計成這個樣子,而不是別的,同時也會不得不嘆服Python設計者Guido van Rossum的深厚功力了。

http://learn.tsinghua.e.cn:8080/2003214889/html/tech/lang_sc/python.htm
====================
對於許多程序員來說,Python的大名應該有所耳聞。而對於Python的評論大多褒貶不一。有的甚至說Python是以其慢速運行而聞名於世。在此我並不是要去評論別人的對於錯,我只是站在一個比較客觀的角度來談談Python這一計算機語言。
Python是一種解釋性語言,而且屬於OpenSource的項目。但是,你可以將其用於商業用途。並且可以將其放在商業的產品光碟中一同發售。當然,人們也可以從www.Python.org或者OpenSource的網站上免費獲得其安裝程序或者源代碼。Python最初是在蘋果計算機上被編譯成功的,但現在他已經可以運行於世界上主流的操作平台之上了。他不只有Windows版本的。同時還有Linux,Unix等很多平台上都可以使用他,在RedHat9中,還將其作為開發必須的一項語言被安裝。對於Python的代碼類型,基本可分為3種,分別是位元組代碼,二進制代碼,優化代碼。他們的後綴名分別是.py .pyc .pyo 這些代碼都可以直接運行。無需做任何的編譯或者連接。而在使用這些類型的代碼上,Python會更具不同的情況選擇不同的類型。

2. 怎麼用python實現新浪微博的登陸與自動評論

自動化,自動登錄微博,自動發微博。 微博內容要有意義,不能是隨機生成的字元。 可以設置每隔一段時間發一條微博,頻率不能太快,當然也不能太慢。怎麼用python實現新浪微博的登陸與自動評論

3. 想要用python3做個軟體對網頁自動化操作,需要搭建什麼環境,如何實現

只用python就行了啊。vs和pycharm都算是編輯器沒什麼關系啊,就是用記事本編輯也行哦。那就用pycharm吧,大家都吹噓它好用。
就是用python的urllib模塊請求網頁就可以了。
登錄就是post數據,然後獲得cookie(可能還有一下其他的東西),帶著它就可以做一些評論。
評論就是根據按鈕找到相關的網頁鏈接,向它post/get數據。
評論採集就是請求相關的網頁,獲得評論的數據,可能是html或者json之類的,然後用beautifulsoup或者json分析,獲得格式化後的數據。
以前用Python做過一個空間的自動點贊、自動回復說說留言、獲取留言的程序。
只要就是分析鏈接和js腳本費點時間。其他地方都簡單。

4. 如何用python爬取一個網站的評論數據

假如一個商品全部評論數據為20w+ 默認好評15w+ 這15w+的默認好評就會不顯示出來。那麼我們可以爬取的數據就只剩下5w+ 接下來 我們就分別爬取全部好評 好評 中評 差評 追加評價 但是就算這些數據加起來 也仍然不足5w+ 上文的博主猜測可能有兩點原因:

1.出現了數據造假,這個數字可能是刷出來的
2.真的有這么多的評論,但這時候系統可能只顯示其中比較新的評論,而對比較舊的評論進行了存檔。
在博主理論的基礎上我也進行了很多相應的測試,就是說無論如何 我們最終都爬不到剩下的5w條數據 只能爬取一部分但這一部分數據也將近上千多條 如果有小夥伴能爬取下更多歡迎補充。

整體思路

全部評價 好評 中評 差評 追加評價的網址都是涉及到一定的參數的 只要修改網頁的數據 在遍歷頁碼 即可完成全部的爬取。

5. 如何用python獲取京東的評論數據

京東商品評論信息是由JS動態載入的,所以直接抓取商品詳情頁的URL並不能獲得商品評論的信息。因此我們需要先找到存放商品評論信息的文件。這里我們使用Chrome瀏覽器里的開發者工具進行查找。
具體方法是在商品詳情頁點擊滑鼠右鍵,選擇檢查,在彈出的開發者工具界面中選擇Network,設置為禁用緩存(Disable cache)和只查看JS文件。然後刷新頁面。頁面載入完成後向下滾動滑鼠找到商品評價部分,等商品評價信息顯示出來後,在下面Network界面的左側篩選框中輸入proctPageComments,這時下面的載入記錄中只有一條信息,這里包含的就是商品詳情頁的商品評論信息。點擊這條信息,在右側的Preview界面中可以看到其中包含了當前頁面中的評論信息。(抓取價格信息輸入prices)。

復制這條信息,並把URL地址放在瀏覽器中打開,裡麵包含了當前頁的商品評論信息。這就是我們要抓取的URL地址。
仔細觀察這條URL地址可以發現,其中proctId=10001234327是當前商品的商品ID。與商品詳情頁URL中的ID一致。而page=0是頁碼。如果我們要獲取這個商品的所有評論,只需要更改page後面的數字即可。

在獲得了商品評論的真實地址以及URL地址的規律後,我們開始使用python抓取這件商品的700+條評論信息。並對這些信息進行處理和分析。
開始前的准備工作
在開始抓取之前先要導入各種庫文件,這里我們分別介紹下需要導入的每個庫文件的名稱以及在數據抓取和分析中的作用。requests用於進行頁面抓取,time用於設置抓取過程中的Sleep時間,random用於生產隨機數,這里的作用是將抓取頁面的順序打亂,re用於在抓取後的頁面代碼中提取需要的信息,numpy用於常規的指標計算,pandas用於進行數據匯總和透視分析,matplotlib用於繪制各站圖表,jieba用於對評論內容進行分詞和關鍵詞提取。
#導入requests庫(請求和頁面抓取)
import requests
#導入time庫(設置抓取Sleep時間)
import time
#導入random庫(生成亂序隨機數)
import random
#導入正則庫(從頁面代碼中提取信息)
import re
#導入數值計算庫(常規計算)
import numpy as np
#導入科學計算庫(拼表及各種分析匯總)
import pandas as pd
#導入繪制圖表庫(數據可視化)
import matplotlib.pyplot as plt
#導入結巴分詞庫(分詞)
import jieba as jb
#導入結巴分詞(關鍵詞提取)
import jieba.analyse

將爬蟲偽裝成瀏覽器
導入完庫文件後,還不能直接進行抓取,因為這樣很容易被封。我們還需要對爬蟲進行偽裝,是爬蟲看起來更像是來自瀏覽器的訪問。這里主要的兩個工作是設置請求中的頭文件信息以及設置Cookie的內容。
頭文件信息很容易找到,在Chrome的開發者工具中選擇Network,刷新頁面後選擇Headers就可以看到本次訪問的頭文件信息,裡麵包含了一些瀏覽器的技術參數和引薦來源信息。將這些信息直接添加到代碼中就可以,這里我們將頭部信息保存在headers中。

#設置請求中頭文件的信息
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept':'text/html;q=0.9,*/*;q=0.8',
'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Connection':'close',
'Referer':''
}

在查看頭文件信息的旁邊還有一個Cookies標簽,點擊進去就是本次訪問的Cookies信息。這里的Cookies信息與前面頭文件中的Cookie信息一致,不過這里更加清晰。把Request Cookies信息復制到代碼中即可,這里我們將Request Cookies信息保存在Cookie中。

#設置Cookie的內容
cookie={'TrackID':'1_VWwvLYiy1FUr7wSr6HHmHhadG8d1-Qv-TVaw8JwcFG4EksqyLyx1SO7O06_Y_XUCyQMksp3RVb2ezA',
'__jda':'122270672.1507607632.1423495705.1479785414.1479794553.92',
'__jdb':'122270672.1.1507607632|92.1479794553',
'__jdc':'122270672',
'__j':'1507607632',
'__jdv':'122270672|direct|-|none|-|1478747025001',
'areaId':'1',
'cn':'0',
'ipLoc-djd':'1-72-2799-0',
'ipLocation':'%u5317%u4EAC',
'mx':'0_X',
'rkv':'V0800',
'user-key':'216123d5-4ed3-47b0-9289-12345',
'xtest':'4657.553..'}

抓取商品評論信息
設置完請求的頭文件和Cookie信息後,我們開始抓取京東商品評論的信息。前面分析URL的時候說過,URL中包含兩個重要的信息,一個是商品ID,另一個是頁碼。這里我們只抓取一個商品的評論信息,因此商品ID不需要更改。但這個商品的評論有700+條,也就是有近80頁需要抓取,因此頁碼不是一個固定值,需要在0-80之間變化。這里我們將URL分成兩部分,通過隨機生成頁碼然後拼接URL的方式進行抓取。
#設置URL的第一部分
url1=''
#設置URL的第二部分
url2='&pageSize=10&callback=fetchJSON_comment98vv41127'
#亂序輸出0-80的唯一隨機數
ran_num=random.sample(range(80), 80)

為了使抓取過程看起來更加隨機,我們沒有從第1頁一直抓取到第80頁。而是使用random生成0-80的唯一隨機數,也就是要抓取的頁碼編號。然後再將頁碼編號與兩部分URL進行拼接。這里我們只知道商品有700+的評論,但並不知道具體數字,所以抓取范圍定位從0-80頁。
下面是具體的抓取過程,使用for循環每次從0-80的隨機數中找一個生成頁碼編號,與兩部分的URL進行拼接。生成要抓取的URL地址並與前面設置好的頭文件信息和Cookie信息一起發送請求獲取頁面信息。將獲取到的頁面信息進行匯總。每次請求間休息5秒針,避免過於頻繁的請求導致返回空值。
#拼接URL並亂序循環抓取頁面
for i in ran_num:
a = ran_num[0]
if i == a:
i=str(i)
url=(url1+i+url2)
r=requests.get(url=url,headers=headers,cookies=cookie)
html=r.content
else:
i=str(i)
url=(url1+i+url2)
r=requests.get(url=url,headers=headers,cookies=cookie)
html2=r.content
html = html + html2
time.sleep(5)
print("當前抓取頁面:",url,"狀態:",r)

在抓取的過程中輸入每一步抓取的頁面URL以及狀態。通過下面的截圖可以看到,在page參數後面的頁碼是隨機生成的並不連續。
抓取完80個頁面後,我們還需要對頁面進行編碼。完成編碼後就可以看到其中所包含的中文評論信息了。後面大部分苦逼的工作就是要對這些評論信息進行不斷提取和反復的清洗。
#對抓取的頁面進行編碼
html=str(html, encoding = "GBK")

這里建議將抓取完的數據存儲在本地,後續工作可以直接從本地打開文件進行清洗和分析工作。避免每次都要重新抓取數據。這里我們將數據保存在桌面的page.txt文件中。
#將編碼後的頁面輸出為txt文本存儲
file = open("c:\\Users \\Desktop\\page.txt", "w")
file.write(html)
file.close()

讀取文件也比較簡單,直接open加read函數就可以完成了。
#讀取存儲的txt文本文件
html = open('c:\\Users\\ Desktop\\page.txt', 'r').read()

提取信息並進行數據清洗
京東的商品評論中包含了很多有用的信息,我們需要將這些信息從頁面代碼中提取出來,整理成數據表以便進行後續的分析工作。這里應該就是整個過程中最苦逼的數據提取和清洗工作了。我們使用正則對每個欄位進行提取。對於特殊的欄位在通過替換等方式進行提取和清洗。
下面是提取的第一個欄位userClient,也就是用戶發布評論時所使用的設備類型,這類的欄位提取還比較簡單,一行代碼搞定。查看一下提取出來的欄位還比較干凈。使用同樣的方法我們分別提取了以下這些欄位的內容。
#使用正則提取userClient欄位信息
userClient=re.findall(r',"usefulVoteCount".*?,"userClientShow":(.*?),',html)
#使用正則提取userLevel欄位信息
userLevel=re.findall(r'"referenceImage".*?,"userLevelName":(.*?),',html)
#使用正則提取proctColor欄位信息
proctColor=re.findall(r'"creationTime".*?,"proctColor":(.*?),',html)
#使用正則提取recommend欄位信息
recommend=re.findall(r'"creationTime".*?,"recommend":(.*?),',html)
#使用正則提取nickname欄位信息
nickname=re.findall(r'"creationTime".*?,"nickname":(.*?),',html)
#使用正則提取userProvince欄位信息
userProvince=re.findall(r'"referenceImage".*?,"userProvince":(.*?),',html)
#使用正則提取usefulVoteCount欄位信息
usefulVoteCount=re.findall(r'"referenceImage".*?,"usefulVoteCount":(.*?),',html)
#使用正則提取days欄位信息
days=re.findall(r'"usefulVoteCount".*?,"days":(.*?)}',html)
#使用正則提取score欄位信息
score=re.findall(r'"referenceImage".*?,"score":(.*?),',html)</pre>

還有一些欄位比較負責,無法通過正則一次提取出來,比如isMobile欄位,有些值的後面還有大括弧。這就需要進一步的提取和清洗工作。
#使用正則提取isMobile欄位信息
isMobile=re.findall(r'"usefulVoteCount".*?,"isMobile":(.*?),',html)

使用for循環配合替換功能將欄位中所有的}替換為空。替換完成後欄位看起來干凈多了。
#替換掉最後的}
mobile=[]
for m in isMobile:
n=m.replace('}','')
mobile.append(n)

proctSize欄位中包含了胸圍和杯罩兩類信息,為了獲得獨立的杯罩信息需要進行二次提取,將杯罩信息單獨保存出來。
#使用正則提取proctSize欄位信息
proctSize=re.findall(r'"creationTime".*?,"proctSize":(.*?),',html)

使用for循環將proctSize中的第三個字元杯罩信息提取出來,並保持在cup欄位中。
#提取杯罩信息
cup=[]
for s in proctSize:
s1=s[3]
cup.append(s1)

創建評論的日期信息僅依靠正則提取出來的信息還是比較亂,無法直接使用。因此也需要進行二次提取。下面是使用正則提取出的結果。
#使用正則提取時間欄位信息
creationTime1=re.findall(r'"creationTime":(.*?),"referenceName',html)

日期和時間信息處於前20個字元,在二次提取中根據這個規律直接提起每個條目的前20個字元即可。將日期和時間單獨保存為creationTime。
#提取日期和時間
creationTime=[]
for d in creationTime1:
date=d[1:20]
creationTime.append(date)

在上一步日期和時間的基礎上,我們再進一步提取出單獨的小時信息,方法與前面類似,提取日期時間中的第11和12個字元,就是小時的信息。提取完保存在hour欄位以便後續的分析和匯總工作。
#提取小時信息
hour=[]
for h in creationTime:
date=h[10:13]
hour.append(date)

最後要提取的是評論內容信息,頁面代碼中包含圖片的評論信息是重復的,因此在使用正則提取完後還需要對評論信息進行去重。
#使用正則提取評論信息
content=re.findall(r'"guid".*?,"content":(.*?),',html)

使用if進行判斷,排除掉所有包含圖片的評論信息,已達到評論去重的目的。
#對提取的評論信息進行去重
content_1=[]
for i in content:
if not "img" in i:
content_1.append(i)

完成所有欄位信息的提取和清洗後,將這些欄位組合在一起生成京東商品評論數據匯總表。下面是創建數據表的代碼。數據表生成後還不能馬上使用,需要對欄位進行格式設置,例如時間和日期欄位和一些包含數值的欄位。具體的欄位和格式設置依據後續的分析過程和目的。這里我們將creationTime設置為時間格式,並設置為數據表的索引列。將days欄位設置為數值格式。
#將前面提取的各欄位信息匯總為table數據表,以便後面分析
table=pd.DataFrame({'creationTime':creationTime,'hour':hour,'nickname':nickname,'proctColor':proctColor,'proctSize':proctSize,'cup':cup,'recommend':recommend,'mobile':mobile,'userClient':userClient,'userLevel':userLevel,'userProvince':userProvince,'usefulVoteCount':usefulVoteCount,'content_1':content_1,'days':days,'score':score})
#將creationTime欄位更改為時間格式
table['creationTime']=pd.to_datetime(table['creationTime'])
#設置creationTime欄位為索引列
table = table.set_index('creationTime')
#設置days欄位為數值格式
table['days']=table['days'].astype(np.int64)
#查看整理完的數據表
table.head()

這里建議再次保存清洗和預處理完的數據表。我們這里將數據表保存為csv格式。到了這一步可以選擇在Excel中完成後續的數據分析和可視化過程,也可以繼續在python中完成。我們這里選擇繼續在python中完成後續的數據分析和可視化工作。
#保存table數據表
table.to_csv('jd_table.csv')

數據分析及可視化
分月評論數據變化趨勢
首先查看京東商品評論的時間變化趨勢情況,大部分用戶在購買商品後會在10天以內進行評論,因此我們可以近似的認為在一個月的時間維度中評論時間的變化趨勢代表了用戶購買商品的變化趨勢。

6. python爬取用戶評價的目的與意義

是為了從互聯網上抓取對於我們有價值的信息。
比如說:訪問天貓的網站,搜索對應的商品,然後爬取它的評論數據,可以作為設計前期的市場調研的數據,幫助很大。
在爬蟲領域,Python幾乎是霸主地位,雖然C++、Java、GO等編程語言也可以寫爬蟲,但Python更具優勢,不僅擁有優秀的第三方庫,還可以為我們做很多的事情,比如:收集數據、數據儲存、網頁預處理等。

7. 怎樣用python抓取淘寶評論

#coding=utf-8

importurllib2
importsys
importjson
importre

#設置系統默認編碼為utf-8
reload(sys)
sys.setdefaultencoding("utf-8")

#Onlyforpython2
'''
只是簡單的示例,沒有檢查無評論的情況,其它異常也可能沒有檢查,
你可以根據自己的需要再對代碼修改
'''

#解析網頁數據
defparseData(html_data,reg_str):
pattern=re.compile(reg_str)
result=re.search(pattern,html_data)
ifresult:
returnresult.groups()


#commodity_url為商品詳情頁面
commodity_url="http://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-9140345655.2.y3LCj0&id=44454286657"

html_data=urllib2.urlopen(commodity_url).read()
#獲取用戶ID和商品ID
auction_msg=parseData(html_data,r'userNumId=(.*?)&auctionNumId=(.*?)&')
ifnotauction_msg:
print"Getreviewsfailed!"#獲取失敗,退出
sys.exit()

reviews_url="http://rate.taobao.com/feedRateList.htm?callback=jsonp_reviews_list&currentPageNum=1&rateType=&orderType=sort_weight&userNumId=%s&auctionNumId=%s"%auction_msg

response=urllib2.urlopen(reviews_url)
reviews_data=response.read().decode("gbk")

#獲取評論數據
json_str=parseData(reviews_data,r'((.*))')[0]
ifnotjson_str:
print"Getreviewsfailed!"#獲取失敗,退出
sys.exit()

jdata=json.loads(json_str)

#下面只列印了第一條評論,如需要列印所有,則遍歷jdata["comments"]即可
printjdata["comments"][0]["content"]

8. 如何用python爬取一本書的評論用戶

京東圖書評論有非常豐富的信息,這裡面就包含了購買日期、書名、作者、好評、中評、差評等等。以購買日期為例,使用Python + Mysql的搭配進行實現,程序不大,才100行。相關的解釋我都在程序里加註了:

  • fromseleniumimportwebdriver

  • frombs4importBeautifulSoup

  • importre

  • importwin32com.client

  • importthreading,time

  • importMySQLdb

  • defmydebug():

  • driver.quit()

  • exit(0)

  • defcatchDate(s):

  • """頁面數據提取"""

  • soup=BeautifulSoup(s)

  • z=[]

  • globalnowtimes

  • m=soup.findAll("div",class_="date-buy")

  • forobjinm:

  • try:

  • tmp=obj.find('br').contents

  • exceptException,e:

  • continue

  • if(tmp!=""):

  • z.append(tmp)

  • nowtimes+=1

  • returnz

  • defgetTimes(n,t):

  • """獲取當前進度"""

  • return"當前進度為:"+str(int(100*n/t))+"%"

  • #———————————————————————————————————|程序開始|—————————————————————————————————

  • #確定圖書大類

  • cate={"3273":"歷史","3279":"心理學","3276":"政治軍事","3275":"國學古籍","3274":"哲學宗教","3277":"法律","3280":"文化","3281":"社會科學"}

  • #斷點續抓

  • num1=input("bookid:")

  • num2=input("pagenumber:")

  • #生成圖書大類鏈接,共需17355*20=347100次

  • totaltimes=347100.0

  • nowtimes=0

  • #開啟webdirver的PhantomJS對象

  • #driver=webdriver.PhantomJS()

  • driver=webdriver.Ie('C:Python27ScriptsIEDriverServer')

  • #driver=webdriver.Chrome('C:Python27Scriptschromedriver')

  • #讀出Mysql中的評論頁面,進行抓取

  • # 連接資料庫

  • try:

  • conn=MySQLdb.connect(host='localhost',user='root',passwd='',db='jd')

  • exceptException,e:

  • printe

  • sys.exit()

  • # 獲取cursor對象

  • cursor=conn.cursor()

  • sql="SELECT * FROM booknew ORDER BY pagenumber DESC"

  • cursor.execute(sql)

  • alldata=cursor.fetchall()

  • flag=0

  • flag2=0

  • # 如果有數據返回就循環輸出,htt/review/10178500-1-154.html

  • ifalldata:

  • forrecinalldata:

  • #rec[0]--bookid,rec[1]--cateid,rec[2]--pagenumber

  • if(rec[0]!=str(num1)andflag==0):

  • continue

  • else:

  • flag=1

  • forpinrange(num2,rec[2]):

  • if(flag2==0):

  • num2=0

  • flag2=1

  • p+=1

  • link="htteview/"+rec[0]+"-1-"+str(p)+".html"

  • #抓網頁

  • driver.get(link)

  • html=driver.page_source

  • #抓評論

  • buydate=catchDate(html)

  • #寫入資料庫

  • forzinbuydate:

  • sql="INSERT INTO ljj (id, cateid, bookid, date) VALUES (NULL, '"+rec[0]+"','"+rec[1]+"','"+z[0]+"');"

  • try:

  • cursor.execute(sql)

  • exceptException,e:

  • printe

  • conn.commit()

  • printgetTimes(nowtimes,totaltimes)

  • driver.quit()

  • cursor.close()

  • conn.close()




京東圖書評論有非常豐富的信息,這裡面就包含了購買日期、書名、作者、好評、中評、差評等等。以購買日期為例,使用Python + Mysql的搭配進行實現,程序不大,才100行。相關的解釋我都在程序里加註了:

  • fromseleniumimportwebdriver

  • frombs4importBeautifulSoup

  • importre

  • importwin32com.client

  • importthreading,time

  • importMySQLdb

  • defmydebug():

  • driver.quit()

  • exit(0)

  • defcatchDate(s):

  • """頁面數據提取"""

  • soup=BeautifulSoup(s)

  • z=[]

  • globalnowtimes

  • m=soup.findAll("div",class_="date-buy")

  • forobjinm:

  • try:

  • tmp=obj.find('br').contents

  • exceptException,e:

  • continue

  • if(tmp!=""):

  • z.append(tmp)

  • nowtimes+=1

  • returnz

  • defgetTimes(n,t):

  • """獲取當前進度"""

  • return"當前進度為:"+str(int(100*n/t))+"%"

  • #———————————————————————————————————|程序開始|—————————————————————————————————

  • #確定圖書大類

  • cate={"3273":"歷史","3279":"心理學","3276":"政治軍事","3275":"國學古籍","3274":"哲學宗教","3277":"法律","3280":"文化","3281":"社會科學"}

  • #斷點續抓

  • num1=input("bookid:")

  • num2=input("pagenumber:")

  • #生成圖書大類鏈接,共需17355*20=347100次

  • totaltimes=347100.0

  • nowtimes=0

  • #開啟webdirver的PhantomJS對象

  • #driver=webdriver.PhantomJS()

  • driver=webdriver.Ie('C:Python27ScriptsIEDriverServer')

  • #driver=webdriver.Chrome('C:Python27Scriptschromedriver')

  • #讀出Mysql中的評論頁面,進行抓取

  • # 連接資料庫

  • try:

  • conn=MySQLdb.connect(host='localhost',user='root',passwd='',db='jd')

  • exceptException,e:

  • printe

  • sys.exit()

  • # 獲取cursor對象

  • cursor=conn.cursor()

  • sql="SELECT * FROM booknew ORDER BY pagenumber DESC"

  • cursor.execute(sql)

  • alldata=cursor.fetchall()

  • flag=0

  • flag2=0

  • # 如果有數據返回就循環輸出,httreview/10178500-1-154.html

  • ifalldata:

  • forrecinalldata:

  • #rec[0]--bookid,rec[1]--cateid,rec[2]--pagenumber

  • if(rec[0]!=str(num1)andflag==0):

  • continue

  • else:

  • flag=1

  • forpinrange(num2,rec[2]):

  • if(flag2==0):

  • num2=0

  • flag2=1

  • p+=1

  • link="ht.com/review/"+rec[0]+"-1-"+str(p)+".html"

  • #抓網頁

  • driver.get(link)

  • html=driver.page_source

  • #抓評論

  • buydate=catchDate(html)

  • #寫入資料庫

  • forzinbuydate:

  • sql="INSERT INTO ljj (id, cateid, bookid, date) VALUES (NULL, '"+rec[0]+"','"+rec[1]+"','"+z[0]+"');"

  • try:

  • cursor.execute(sql)

  • exceptException,e:

  • printe

  • conn.commit()

  • printgetTimes(nowtimes,totaltimes)

  • driver.quit()

  • cursor.close()

  • conn.close()




9. 可以用Python爬蟲監控一個人在微博等社交網路發出與收到的評論嗎

你可以監控已授權的賬戶收到的評論和自動回復評論,微博是有這個相關api的,至於監控其他人的,就不是很清楚了,你可以看一下微博開放平台上的微博API
http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI

10. 如何設計Python評價知

Python[1] (英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/), 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。
Python是純粹的自由軟體, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協議[2] 。Python語法簡潔清晰,特色之一是強制用空白符(white space)作為語句縮進。
Python具有豐富和強大的庫。它常被昵稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中[3] 有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。需要注意的是在您使用擴展類庫時可能需要考慮平台問題,某些可能不提供跨平台的實現。
7月20日,IEEE發布2017年編程語言排行榜:Python高居首位[4] 。

熱點內容
嵌入式存儲伺服器 發布:2024-05-20 22:14:55 瀏覽:394
sql分組條件 發布:2024-05-20 22:08:49 瀏覽:15
配網web伺服器一個IP地址 發布:2024-05-20 22:07:16 瀏覽:724
電腦板伺服器地址175 發布:2024-05-20 22:03:30 瀏覽:958
編譯靜態函數時 發布:2024-05-20 21:51:20 瀏覽:350
如何在別人的伺服器加模組 發布:2024-05-20 21:28:29 瀏覽:60
伺服器的bios晶元電腦店有嗎 發布:2024-05-20 21:28:26 瀏覽:223
剪輯電影什麼配置 發布:2024-05-20 21:25:17 瀏覽:818
解壓神器中的詭異事件 發布:2024-05-20 21:17:59 瀏覽:7
星火草原系統源碼 發布:2024-05-20 21:12:44 瀏覽:767