爬取網頁三步走

](http://upload-images.jianshu.io/upload_images/2052237-2d487d3fb8b8710a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- python打開本地文件
path = 'C:/Users/Google/Desktop/web/new_index.html'
with open(path, 'r') as f:
Soup = BeautifulSoup(f.read(), 'lxml')
- 依次選擇審查元素 自己需要的selector
1.jpg
直接copy的 selector 和在瀏覽器看見的層級關系 比對下
body > div.main-content > ul > li:nth-child(1) > img
1.jpg
li:nth-child(1) 改成 nth-of-type(1)
- 那么我會按照層級關系 替換成圖片的那樣, 再者把
body > div.main-content > ul.articles > li > img
images = Soup.select('body > div.main-content > ul.articles > li > img')
- print 函數里面 如果有多個不同類別的結果,想分割的話 如下
print(images,titles,sep'\n---------\n')
- 那么當找到的結果是多個的時候 返回的就是一個列表,如果要單獨操作就需要for 循環,
for title in titles: #這個是一個元素的時候
for title, pic, desc, rate, cate in zip(titles, pics, descs, rates, cates): # 這個是多個 元素的 的時候 需要集體賦值。
- 先說說字典構造
1.jpg
- 那么 下一步就需要取具體某個元素里面的值。
'title': title.get_text(), #這個是取文本
'pic': pic.get('src'),#取 標簽里面 src的 值
'cate': list(cate.stripped_strings)#多對一
- 如果是多對一結構的時候 我們就應該在他的父級標簽停下來。
1.jpg
這里面就要把 span 這個給刪了 因為
1.jpg
我們要獲取里面的多個標簽。 下一步就要獲取一個父級標簽下面子標簽下的所有文本信心, 就用 .stripped_strings 這個方法,由于是成組的標簽 所以我們要把它列表化。
'cate': list(cate.stripped_strings)
- 下面要找出所有分數大于3 的文章, 那么我應該把數據添加到列表里面然后再篩選。
第一步建立空列表,
1.jpg
第二步 添加數據到列表
2.jpg
第三步 篩選
1.jpg
這里面有兩點 第一用for函數分別取出, 第二 float 字符串為數字, 以及怎么取字典里面的鍵值。