Python 利用爬蟲爬取網頁內容 (div節點的疑惑)

來源:互聯網
上載者:User

標籤:lease   att   .text   mobile   pil   time   運算式   har   beautiful   

最近在寫爬蟲的時候發現利用beautifulsoup解析網頁html

利用解析結果片段為:

<td valign="top">
<div class="pl2">
<a class="" href="https://movie.douban.com/subject/26588308/">
死侍2
/ <span style="font-size:13px;">DP2</span>
</a>
<p class="pl">2018-05-18(美國) / 瑞恩·雷諾茲 / 喬什·布洛林 / 莫蕾娜·巴卡林 / 朱利安·迪尼森 / 莎姬·貝茲 / T·J·米勒 / 萊斯利·格塞斯 / 卡蘭·索尼 / 布裡安娜·希德布蘭德 / 傑克·凱西 / 埃迪·馬森 / 忽那汐裡 / 斯蒂芬·卡皮契奇 / 蘭德爾·瑞德...</p>
<div class="star clearfix">
<span class="allstar40"></span>
<span class="rating_nums">7.5</span>
<span class="pl">(94247人評價)</span>

 

我要抓取的是評分,也就是上文中:<span class="rating_nums">7.5</span>

利用find_all(‘節點‘,class_=‘目標class‘)

在之前抓取的時候,經常將“”這個符號也寫入目標class中,並且認為要加入轉義符號r‘’以去消除轉義

但經常返回的是Null 字元串

之後看到了其他部落格後發現,不用加入“”也可以(若是加入“”後應該注意r‘‘的使用)

原始碼為:

import reimport requestsfrom bs4 import BeautifulSoupdef get_HTML(url):    header = {"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Mobile Safari/537.36"}    try:        r = requests.get(url,timeout = 30,headers=header)        r.raise_for_status()        r.encoding = r.apparent_encoding   #指定編碼形式        return r.text    except:        return "please inspect your url or setup"#解析目標網頁的htmldef get_information_from_url(url):    text = get_HTML(url)    soup = BeautifulSoup(text,"html.parser")#解析text中的HTML    print(soup)    dls = soup.find_all(‘tr‘, class_=r‘‘"item"‘‘)    marks = soup.find_all(‘span‘,class_=‘rating_nums‘)    #print(dls)    print(marks)    f = []    for x in dls:        rel = ‘>\\n +‘+‘[\s\S]*?‘+‘/ <‘#Regex        pattern = re.compile(rel)        fname =pattern.findall(str(x))        f.append(fname)    f = str(f)    #print(f)    fname = f.replace(‘ ‘,‘‘)    fname = fname.replace(‘\\n‘,‘‘)    fname = fname.replace(‘\‘>‘,‘‘)    fname = fname.replace(‘/<\‘‘,‘‘)    #print(fname)                    url = "https://movie.douban.com/chart"get_information_from_url(url)   

 

運行結果為:

[<span class="rating_nums">7.5</span>, <span class="rating_nums">6.8</span>, <span class="rating_nums">8.1</span>, <span class="rating_nums">8.2</span>, <span class="rating_nums">7.3</span>, <span class="rating_nums">8.2</span>, <span class="rating_nums">7.9</span>, <span class="rating_nums">7.0</span>, <span class="rating_nums">7.2</span>, <span class="rating_nums">7.1</span>]
[[死侍2],[瞞天過海:美人計],[升級],[複仇者聯盟3:無限戰爭],[遺傳厄運],[祈禱落幕時],[燃燒],[摘金奇緣],[致所有我曾愛過的男孩],[]]

在對其中用Regex進行切割就好了

 

Python 利用爬蟲爬取網頁內容 (div節點的疑惑)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.