第二课学习需要数据结构和循环的知识,这部分我还没看到,就一边跟着老师敲代码一边学习了。
提前总结一点,不敲不知道,一敲吓一跳。
供统计的网页如下:
我的代码:
from bs4 import BeautifulSoup
info=[]
with open('/home/steven/Downloads/Plan-for-combating-master/week1/1_2/1_2code_of_video/web/new_index.html','r') as wb_data:
Soup = BeautifulSoup(wb_data,'lxml')
images = Soup.select('body > div.main-content > ul > li > img')
titles = Soup.select('body > div.main-content > ul > li > div.article-info > h3 > a')
rates = Soup.select('body > div.main-content > ul > li > div.rate > span')
cates = Soup.select('body > div.main-content > ul > li > div.article-info > p.meta-info')
descs = Soup.select('body > div.main-content > ul > li > div.article-info > p.description')
for title,rate,desc,cate,image in zip(titles,rates,descs,cates,images):
data = {
'title':title.get_text(),
'rate':rate.get_text(),
'desc': desc.get_text(),
'cate': list(cate.stripped_strings),
'image':image.get('src')
}
info.append(data)
for i in info:
if float(i['rate'])>3:
print(i['title'],i['cate'])
代码运行结果:
总结:
- 在检查模式下从网页中拷贝网页元素的路径时,可能在其中产生一些空格,在pycharm中编译时会导致失败,必须去除掉;
- 注意缩进的使用:想要打印 全部信息时,不需要缩进;而要打印for循环中的所有信息时,不缩进只会打印出第一条数据。只有缩进后才会打印出全部的数据;此问题至少困扰我半个小时以上。