最近在学习爬虫,爬取几个新闻网站,和大家分享一下学习心得,下方展示为爬取湖北应急办网站(http://yj.hubei.gov.cn/)根据需要爬取突发事件的内容。
首先我们要先分析网站的特点,明确自己爬取网站的信息,那些是你的目标,我爬取了新闻标题,日期,来源和新闻内容这几项。由于不同的浏览器版本不同,可能会存在微小的差别,我最开始使用的是360浏览器,然而发现并不能审查元素,由于本人是一个小菜鸟,后来得知了F12打开开发者模式,获取一些内容,比如常用的
select方法和find_all方法。select方法是通过CSS选择器
soup.select("head > title")
# [<title>The Dormouse's story</title>]
soup.select("p > a")
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
# <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
soup.select("p > a:nth-of-type(2)")
# [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]
soup.select("p > #link1")
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
soup.select("body > a")
# []
id = #
soup.select("#link1")
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
class = .
soup.select(".sister")
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
# <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
当你找的属性不同时,如上,class和id,使用不同的符号,区分,在使用前台css进行页面渲染的时候一样。
否存在某个属性来查找:
soup.select('a[href]')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
# <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]