Python筆記(*爬蟲)

Python 筆記(*爬蟲):
For example:

import requests
from bs4 import  BeautifulSoup

resp = requests.get('https://code-gym.github.io/spider_demo/')#這個回傳的資料就是response
#接下來交給beautiful soup解析
soup = BeautifulSoup(resp.text, 'html5lib')#我們要傳入兩個參數給beautifulSoup,第一個是resp,但我加上text代表我要取得文字的內容
#第二個參數是分析器的名稱,使用html5lib是因為其對於網頁錯誤的容忍度較高
print(soup.find('h1'))#但這樣是包含了標籤資料
#印出來是:<h1>Code Gym 爬蟲教學</h1>,所以我們改成
print(soup.find('h1').text)#這樣就會正確顯示了
#我們也可以不要用find,直接打
print(soup.h1)#此時的結果跟第一種是一樣的
print(soup.h1.text)#於是我們再加上.text,就可以像第二個一樣了
#雖然用標籤找網頁十分方便,但是一個網站通常會有許多一樣的標籤
#所以如果我們想把所有東西都找到,我們可以利用find_all
#for h3 in soup.find_all('h3'):
#    print(h3.a)#可以利用.a,取得超連結標籤a元素,會印出所有有使用標籤a的元素,如果沒有使用標籤a,就會出現None
#使用class取得網頁資料:
for title in soup.find_all('h3','post-title'):
    print(title.a)#此時就沒有None的部分了
#使用key value來取得網頁元素資料:
#一個html有時候不只有一個屬性,我們可以利用key-value的方式來尋找多種屬性,for example:
for cat in soup.find_all('a',{'class':'post-category','class':'cat-1'}):
    print(cat)
    #函式第一個是標籤名稱,第二個則是將屬性做成key-value的方式
#stripped_strings:
#是一個generator()的物件,所以必須要用for來取出,他最大的目的是把標籤,換行文字等等都給移除掉,只留下文字,我們需要的東西。
for posts in soup.find_all('div','post-body'):
    for post in posts.stripped_strings:
        print (post)

for body in soup.find_all('div',{'class':'post-body'}):
    for bodys in body.stripped_strings:
        print (bodys)


#尋找父節點(Parent):

nav = soup.find(id=nav’)
header = nav.parent
print(header)
#執行之後,印出來的就是header的所有內容,這種方式是找出navparent

#尋找平行的兄弟節點:
javascript = soup.find(‘li’,‘cat-2’)
print(javascript)
print(javascript.previous_sibling)#尋找上一個平行的兄弟節點
print(javascript.next_sibling)#尋找下一個兄弟節點

#尋找子節點(Children):

先找到ul標籤,所以先用函式findul
ul= soup.find(‘ul’)
利用屬性children,取得所有標籤名稱為Li的元素
For li in ul.children:
print(li.find(‘a’))



放空了十幾二十天,這幾天都在打遊戲,耍廢,最近看到寒假又多了兩個禮拜,心裡才想到該回來繼續寫筆記ㄌQQ,之前那個line-bot寫一寫因為朋友太厲害,自己一個人把功能寫出來,所以我們直接斷尾真是不好意思TT,這個爬蟲的功能是我目前最不熟悉,但同時也是最重要的功能,為了之後的side-project,希望今天能好好的將這個複習完畢,並在下一個筆記將爬蟲這個技巧運用到ptt上面,這也是我之後會主打的功能之一!


















留言

熱門文章