今天要做的是一个爬取当当网畅销书排行的爬虫,之后想看排行直接运行程序就可以看到啦,没有多余的信息,是不是很给力!
在前两次的爬虫编写过程中,思想都是把整个HTML文档看做一个很长很长的字符串,通过编写特定的正则表达式匹配我们需要的内容。这对于一般的内容不多的爬取需求是可以满足,但是一旦我们需要爬取的内容多了起来,正则表达式的模式就会变得相当复杂,可读性也不够好。那么有没有另外一种方法呢?答案是肯定的,这就是BeautifulSoup这个第三方库。
那么BeautifulSoup是做什么的呢?关于其详细功能,参阅官方文档,点击打开链接,这里只给出其主要思想:
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。Beautiful Soup会帮你节省数小时甚至数天的工作时间。
简单来讲,Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,通过对这些对象进行操作,就可以得到需要的内容。
另外,稍微提一下,该实例获取指定url的html文档使用了requests库,其原理和urllib.request类似:
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = {'User-Agent': user_agent}
r = requests.get(url, headers=headers)
html = r.text
得到一个html后,就可以使用soup = BeautifulSoup(html, 'html.parser'),得到解析后的BeautifulSoup对象soup,可以对soup进行操作获取指定内容。 好了,具体的用法还是参考上面的官方文档,先步入正题,编写今天的爬虫吧:
1.首先,进入到当当图书畅销榜的网页