1. 程式人生 > >第9課、解析網頁中的元素-四周學會爬蟲系統

第9課、解析網頁中的元素-四周學會爬蟲系統

ini bsp tip 好的 python3 pycharm har tle erp

目標:爬取本地網頁中,評分大於3的文章,並打印出來


準備:

  1. 安裝Python3.0。
  2. 安裝PyCharm,用於開發Python的集成環境。
  3. 安裝BeautifulSoup庫,學習爬蟲需要的庫。

BeautifulSoup:是一個可以從HTML和XML中讀取數據的庫。庫也叫模塊,在笨辦法學Python中叫做特征,是其他程序員開發好的一些代碼,可以拿來導入(import),然後調用。開發之前最好先學習一下Python的基本知識,《笨辦法學python》或者是《編程小白的第一本python》都是不錯的選擇。

思路:

  1. 使用BeautifulSoup解析本地網頁
  2. 獲取所需的信息標簽
  3. 精簡獲取的信息

代碼:

 1 from bs4 import BeautifulSoup
 2 # BeautifulSoup從HTML和XML中讀取數據的庫
 3 
 4 info = []
 5 # 定義一個名為info的列表
 6 
 7 with open(/Users/my/Desktop/lesson9/new_index.html,r) as wb_data:
 8     Soup = BeautifulSoup(wb_data,lxml)
 9 # 在開發的過程中,許多對象在使用後,都會執行一條或者多條語句來關閉,釋放等操作,這樣累贅的操作就會讓人忘記,with語句就可以解決這些問題。
10 # 將文件以wb_data的名字打開 11 # 打開之後再用beautifulSoup解析網頁 12 13 # 粗略的獲取需要信息的標簽 14 # 依次是圖像、標題、描述、標簽、評分 15 images = Soup.select(body > div.main-content > ul > li > img) 16 titles = Soup.select(body > div.main-content > ul > li > div.article-info > h3 > a) 17 descs = Soup.select(
body > div.main-content > ul > li > div.article-info > p.description) 18 rates = Soup.select(body > div.main-content > ul > li > div.rate > span) 19 cates = Soup.select(body > div.main-content > ul > li > div.article-info > p.meta-info) 20 # print(images,titles,descs,rates,cates,sep=‘\n---------------------------------\n‘) 21 22 # 精簡獲取的信息,留下自己有用的東西 23 # for循環可以遍歷任何序列的項目 24 for title,image,desc,rate,cate in zip(titles,images,descs,rates,cates): 25 data = { 26 title: title.get_text(), # get_text()去除html標簽,獲得文本信息。 27 rate: rate.get_text(), 28 desc: desc.get_text(), 29 cate: list(cate.stripped_strings), # stripped_strings獲得一個父級標簽下所有子標簽的文本信息 30 image: image.get(src), # get()獲得某個標簽的屬性 31 } 32 info.append(data) #append在列表末尾添加新的對象 33 34 # 打印評分大於3的文章 35 for i in info: 36 if float(i[rate]) >3: 37 print(i[title],i[cate],i[rate])


遇到問題:
1. 安裝BeautifulSoup庫時,PyCharm提示Error錯誤

原因:教程中使用的是Python2,而自己機子使用的是Python3,要想安裝BeautifulSoup,需要搜索bs4。具體步驟:打開PyChram,在File中找到Setting,搜索project Interpreter。然後在右側點擊“+”,搜索bs4,安裝就可以看到BeautifuSoup庫。

2. 輸入的錯誤,在輸入的時候多了一個空格或者少了一個空格而報錯。

如在:

rates = Soup.select(body > div.main-content > ul > li > div.rate > span)

之前加了一個空格就會報錯。變成了(rate前面有一個空格)

 rates = Soup.select(body > div.main-content > ul > li > div.rate > span)

需要仔細檢查,嚴格按照格式書寫。

第9課、解析網頁中的元素-四周學會爬蟲系統