更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
標簽下
標簽下標簽里。于是就有了爬取的思路:
class=short的span標簽(一)導入需要用到的模塊與包
import requests from bs4 import BeautifulSoup import time(二)獲取差評內容
先爬取一頁看下效果
base_url = 'https://movie.douban.com/subject/26794435/comments?start=0&limit=20&sort=new_score&status=P&percent_type=l' def get_one_pageComments(html): soup = BeautifulSoup(html.content, 'lxml') # 可以在這里print下html.content看是否需要添加ua或者cookie爬取 commentsList = soup.find_all('span',class_='short') pageComments = "" for commentTag in commentsList: pageComments += commentTag.text print(pageComments) html = requests.get(url) get_one_pageComments(html)與原網頁對比下:
說明成功爬取到了差評內容
(三)翻頁
接下來進行翻頁處理,先對比下前三頁的url:
發現每翻一頁
start的值就加20。翻頁功能就可以實現了base_url = 'https://movie.douban.com/subject/26794435/comments?start={}&limit=20&sort=new_score&status=P&percent_type=l' for x in range(0, 81, 20): url = base_url.format(x) print(url)綜合以上所述,整個流程的代碼實現就完成了:
base_url = 'https://movie.douban.com/subject/26794435/comments?start={}&limit=20&sort=new_score&status=P&percent_type=l' def get_one_pageComments(html): soup = BeautifulSoup(html.content, 'lxml') commentsList = soup.find_all('span',class_='short') pageComments = "" for commentTag in commentsList: pageComments += commentTag.text print(pageComments) for x in range(0,81, 20): # 爬取前4頁 url = base_url.format(x) html = requests.get(url) get_one_pageComments(html) time.sleep(1)time.sleep是避免被識別出在爬取的一個措施。這樣,就完成了對該電影差評的爬取。
二、xpath
其實絕大部分都是一樣的,不同之處在于如何定位到差評文本內容。
由于每條差評都在一個
都在
。因此,首先要定位到
,其次定位
,然后定位
,接著定位,最后定位text()思路清晰了,接下來就是代碼的實現了:
import requests from lxml import etree def get_text(url): resp = requests.get(url).content.decode('utf-8') html = etree.HTML(resp) divs = html.xpath('//div[@class="mod-bd"]/div') # print(divs) for div in divs: pl = div.xpath('//div[@class="comment"]/p/span/text()') print(pl) base_url = 'https://movie.douban.com/subject/26794435/comments?start={}&limit=20&sort=new_score&status=P&percent_type=l' for x in range(0, 81, 20): url = base_url.format(x) get_text(url)爬取后的結果:
三、正則表達式
用正則表達式去匹配一定要記住下面三個非常非常常用且作用十分的匹配式:
.+?代表所有字符re.VERBOSE代表正則表達式的注釋re.DOTALL代表.可以匹配所有字符,包括換行符我們要爬取所有的差評內容,即要找到所有的
然后去定位
:雖然分別用BeautifulSoup、Xpath、正則表達式基本實現了對差評內容的爬取,但是不足之處在于沒有對爬取到的str進行保存,是因為博主在保存時總是報錯。。還沒有找到合適的解決辦法,后續會進行完善。