日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

beautifulsoup_BeautifulSoup爬虫了解一下

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 beautifulsoup_BeautifulSoup爬虫了解一下 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[導語]悠哉悠哉得過完了一個寒假,是時候調整一下回歸求知之路了.這期講一下利用BeautifulSoup庫來爬蟲.[封面via:花瓣網]

01

初識BeautifulSoup

[1]scrapy學會了,這里理解起來很容易,大同小異罷了.將返回的response.read用解析器進行解析,學習一下beautifulsoup庫如何篩選數據,也就是如何找到標簽,標簽的屬性,文本這些.下面圖中列出了常用的幾個用法,之后實例中再補充.

[2]:find_all()的結果以列表的形式輸出,所以可以遍歷(循環).

可以看到,第一個li標簽就是啥也沒有,列表的每一個元素都以逗號隔開,之所以print換行是因為\n的緣故.

[3]:提取文本和屬性值

提取屬性值:直接在標簽后面加上'屬性名']就可以了,點取標簽(直接就是soup.a這樣形式)或者find()都可以.這里不能使用find_all(),因為它的輸出是列表,后面加[]會被當成索引處理,報錯.

分隔符只是為了證明兩種寫法都可以提取出href的屬性值

提取文本:get_text() 和string

看一眼這個get_text()的說明,也就知道我后面bug產生的原因了(因為返回的是unicode字符串~)

調用這個方法,當前標簽里的所有子孫tag的文本內容也提取出來了

可以看出,string的條件更為苛刻,最好是定位到當前標簽,才能提取到文本.這里只需要知道一個概念就是在bs4中,文本也是一種節點,叫做NavigableString節點.

解釋地明明白白!

關于bs4的用法有很多,像parents,siblings等等,還是慢慢探索吧~

[reference]BeautifulSoup的中文說明文檔

https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html

02

爬蟲腳本詳解

目前還不太熟悉在多個函數中游走,所以只簡單的用了一個類,而且這個例子很簡單,也沒翻頁,也沒加headers和代理ip,只需要把結果寫入文件就可以了.

03

學習過程中的bug

[1]:運行過程中出現了這個問題,這個問題的解決方法網上可以直接查到,當然,這個一看就是編碼方式出的問題,可以通過修改sys的setdefaultencoding('utf8')解決這個問題,但是一般我們python文件開頭就已經指明了-*-conding:utf-8 -*-,為什么不是按照utf8編碼,而又成了默認的ascii編碼了呢?后來我發現這個問題是因為寫入文件導致的.(python都是將字符串解碼為unicode再編碼的,意思是只有當unicode對象是中文時寫入才會報錯)

前面加u就代表后面內容是一個unicode對象.

以上例子說明,終端的中文輸出沒有問題的,但是寫入文件時的中文就會報這個錯誤,此時需要我們再次指定編碼方式.你可以修改sys,也可以直接在輸出的變量后面加上.encode('utf8')就可以了.

[結束語]總的來說,以scrapy入門還是不錯的,上手bs會很好理解,我自己還是比較喜歡用bs4一點,翻頁和代理以及實戰依舊會提上日程的.不過最近想get一下python和R做圖的知識點,說不定下次會插播一期畫圖心得~

總結

以上是生活随笔為你收集整理的beautifulsoup_BeautifulSoup爬虫了解一下的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。