第一步,点亮匹配按钮(以后我就叫它匹配按钮了)
第二步,把鼠标放到要选的区域,注意,要颜色完全覆盖住你要选的区域,覆盖不住调整鼠标位置。
第三步,左击鼠标,定位代码。
第四步,再看一眼那行标签是不是最小且公共的了,有虚线,可以看到那行标签管到哪一层。
其实你再认真找一下,就会发现我们上面图中标出的区域并不是最小的,最小的是那个< ul >。
第二步:找到单个目标所在标签
第二步怎么走啊?第一步可以理解吧,第一步做完事要为“find_all”服务的,一篮子全捞出来,那第二步自然是要一个一个拣出来嘛,为“find”服务。
那具体怎么做就不用我再说了吧,参照上一步。
来我带你打开一个标签看一下:
看到没,层次分明。
第三步:代码与自动化
第三步自然就要把目标值取出来了嘛,我们顺便把网址也取了吧。
import requests
from bs4 import BeautifulSoup
res = requests.get('http://books.toscrape.com/')
soup = BeautifulSoup(res.text,'html.parser')
items = soup.find('ul',class_ = 'nav nav-list').find('ul').find_all('li') #我惊奇的发现,还有这种*操作
for item in items:
kind = item.find('a')
print('分类' kind.text.strip() '\n网址' kind['href'] '\n')
123456789101112
这样打出来你会发现那根本不是一个完整的网址,这要怎么办呢?
第四步:填充网址
其实你打开一个目录,就会发现它的网址长这样:(这里我打开的是第一个目录)
http://books.toscrape.com/catalogue/category/books/travel_2/index.html
这有什么特点呢?咱把它分开:
http://books.toscrape.com/
catalogue/category/books/travel_2/index.html
12
好,现在再问你看到了什么?
这两部分是不是都能找到出处!!
好,现在我们微调一下上面的代码:
import requests
from bs4 import BeautifulSoup
url = 'http://books.toscrape.com/'
res = requests.get(url)
soup = BeautifulSoup(res.text,'html.parser')
items = soup.find('ul',class_ = 'nav nav-list').find('ul').find_all('li') #我惊奇的发现,还有这种*操作
for item in items:
kind = item.find('a')
print('分类:' kind.text.strip() '\n网址:' url kind['href'] '\n')
1234567891011121314
第一题到此告一段落、
小爬虫扑空啦
学完这些之后,我就想着去爬我的博客评论了。不过一顿操作下来:
gogogo!!!
好,定位代码段:
好,层层爬取(演示效果,不然我才不一层一层拨开):
好,结果显示为空。
可以去打印出爬下来的网页源代码:res,然后翻一翻,你会惊奇的发现,评论部分被隐藏了!!!
那怎么办呢?接下来那就进入我们今天的第一个知识点了–json串。
json串
依旧是别人的栗子,我来讲给大家懂。
网页源代码里没有我们想要的数据,那它究竟藏到了哪里呢?
想找到答案,需要用到一项新技能——翻找Network!
还记得我一开始就叫大家用谷歌浏览器吗?现在就体现出优势了。
Network首先,打开一个界面,这里我选择了志炫的歌单,我比较喜欢他的歌。
小白请跟我来,因为你并不知道哪些网页是用json 传输什么数据的,所以练习的时候不要自己乱找网页。
https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w=林志炫