网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
要把信息从网页上抓取下来,并经过一定的清洗、分析,最后得到我们预期的结果,需要有以下几个步骤:
这里要先说明一下:
“下载网页”需要用到python的requests库,”解析网页“需要用到BeautifulSoup4库。可以提前下载安装。
这两个库的具体使用会在后续的文章中详细描述。
具体代码如下:
def downloadPage():
#url要用网站地址的全称,不可简写为www.baidu.com
url = "https://www.baidu.com"
#模拟网页的请求头,通用写法。(涉及到网络层面知识,这里不展开。)
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'
}
#用get的方式,获取url里的内容
data = requests.get(url, headers=headers).content
return data
具体代码如下:
toolbar = []
def parse_html(html):
soup = BeautifulSoup(html,"html.parser")
detail = soup.find('div', attrs={'id': 'u1'}) #如果这个id获取不到结果,可以填它的上一级标签
if detail != None:
for bar in detail.find_all('a'): #用find_all('a')方法可以快速找到所有的a标签
name = bar.getText() #获取a标签中的文本值
toolbar.append(name) #每获取一个文本值就加入toolbar列表中,便于后续输出
return toolbar #将解析结果返回给调用的函数
具体代码如下:
def main():
handle = parse_html(downloadPage())
if handle != None:
for name in handle:
print(name)
if __name__ == '__main__':
main()
把思路连贯起来,将代码串接起来的结果如下:
import requests
from bs4 import BeautifulSoup
url = 'https://www.baidu.com'
def downloadPage(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'
}
data = requests.get(url, headers=headers).content
return data
toolbar = []
def parse_html(html):
soup = BeautifulSoup(html,"html.parser")
detail = soup.find('div', attrs={'id': 'u1'})
if detail != None:
for bar in detail.find_all('a'):
name = bar.getText()
toolbar.append(name)
return toolbar
def main():
handle = parse_html(downloadPage(url))
if handle != None:
for name in handle:
print(name)
if __name__ == '__main__':
main()