黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Python爬蟲初接觸(六)

系統(tǒng) 1926 0

這篇博客做一個爬蟲的實(shí)例

今天剛看到一個新聞,在7月26日上映的《哪吒之魔童降世》,密鑰第二次延期至10月26日。
截止至9月17日,《哪吒之魔童降世》票房已超49億票房,在豆瓣上對該電影的評價有好有壞。說實(shí)話,博主看了這個電影真的覺得蠻不錯的,因此把短評中的差評爬取下來,看下差評包括哪些方面。

目錄

      • 一、BeautifulSoup
      • 二、xpath
      • 三、正則表達(dá)式

一、BeautifulSoup

首先需要了解下差評文字內(nèi)容在哪些標(biāo)簽下:

進(jìn)入豆瓣該電影短評界面,檢查元素:
Python爬蟲初接觸(六)_第1張圖片
Python爬蟲初接觸(六)_第2張圖片
可以看出,每一條評論都在一個

標(biāo)簽下,具體的文字內(nèi)容,在
標(biāo)簽下

標(biāo)簽下 標(biāo)簽里。

于是就有了爬取的思路:

  1. 找到所有的 class=short 的span標(biāo)簽
  2. 爬取文字內(nèi)容
  3. 翻頁
    Python爬蟲初接觸(六)_第3張圖片

(一)導(dǎo)入需要用到的模塊與包

              
                import requests
from bs4 import BeautifulSoup
import time

              
            

(二)獲取差評內(nèi)容
先爬取一頁看下效果

              
                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)

              
            

Python爬蟲初接觸(六)_第4張圖片
與原網(wǎng)頁對比下:
Python爬蟲初接觸(六)_第5張圖片
說明成功爬取到了差評內(nèi)容

(三)翻頁
接下來進(jìn)行翻頁處理,先對比下前三頁的url:
在這里插入圖片描述
發(fā)現(xiàn)每翻一頁 start 的值就加20。翻頁功能就可以實(shí)現(xiàn)了

              
                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)

              
            

Python爬蟲初接觸(六)_第6張圖片

綜合以上所述,整個流程的代碼實(shí)現(xiàn)就完成了:

              
                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 是避免被識別出在爬取的一個措施。

Python爬蟲初接觸(六)_第7張圖片
這樣,就完成了對該電影差評的爬取。

二、xpath

其實(shí)絕大部分都是一樣的,不同之處在于如何定位到差評文本內(nèi)容。
Python爬蟲初接觸(六)_第8張圖片

由于每條差評都在一個

中,而所有的
都在

因此,首先要定位到
,其次定位
,然后定位

,接著定位 ,最后定位 text()

思路清晰了,接下來就是代碼的實(shí)現(xiàn)了:

                
                  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)

                
              

爬取后的結(jié)果:
Python爬蟲初接觸(六)_第9張圖片

三、正則表達(dá)式

用正則表達(dá)式去匹配一定要記住下面三個非常非常常用且作用十分的匹配式:

  1. .+? 代表所有字符
  2. re.VERBOSE 代表正則表達(dá)式的注釋
  3. re.DOTALL 代表.可以匹配所有字符,包括換行符

Python爬蟲初接觸(六)_第10張圖片
我們要爬取所有的差評內(nèi)容,即要找到所有的


然后去定位

Python爬蟲初接觸(六)_第11張圖片

雖然分別用BeautifulSoup、Xpath、正則表達(dá)式基本實(shí)現(xiàn)了對差評內(nèi)容的爬取,但是不足之處在于沒有對爬取到的str進(jìn)行保存,是因?yàn)椴┲髟诒4鏁r總是報錯。。還沒有找到合適的解決辦法,后續(xù)會進(jìn)行完善。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論