日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python爬蟲初接觸(六)

系統 1688 0

這篇博客做一個爬蟲的實例

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

目錄

      • 一、BeautifulSoup
      • 二、xpath
      • 三、正則表達式

一、BeautifulSoup

首先需要了解下差評文字內容在哪些標簽下:

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

標簽下,具體的文字內容,在
標簽下

標簽下 標簽里。

于是就有了爬取的思路:

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

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

              
                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)

              
            

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

(三)翻頁
接下來進行翻頁處理,先對比下前三頁的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)

              
            

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

綜合以上所述,整個流程的代碼實現就完成了:

              
                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

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

由于每條差評都在一個

中,而所有的
都在

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

,接著定位 ,最后定位 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)

                
              

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

三、正則表達式

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

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

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


然后去定位

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

雖然分別用BeautifulSoup、Xpath、正則表達式基本實現了對差評內容的爬取,但是不足之處在于沒有對爬取到的str進行保存,是因為博主在保存時總是報錯。。還沒有找到合適的解決辦法,后續會進行完善。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 河北区| 定结县| 祁东县| 鞍山市| 民县| 绥宁县| 大城县| 沈阳市| 鄂托克前旗| 贵阳市| 应城市| 修武县| 东光县| 富民县| 新密市| 兰州市| 溆浦县| 同仁县| 湖州市| 苗栗县| 连城县| 道孚县| 朝阳县| 潮安县| 班戈县| 通化市| 建昌县| 抚松县| 沧源| 呼玛县| 颍上县| 梁山县| 南城县| 天柱县| 越西县| 安溪县| 通化县| 丁青县| 龙井市| 桐梓县| 旌德县|