爬虫学习(一)
程序员文章站
2022-05-08 10:55:57
...
1、第一个爬虫程序(爬新浪主页)
查看页面的编码类型,通过ctrl+f12中Elements代码里面的charset的赋值,可以使用ctrl+F查找
新浪新闻:UTF-8;人民网:GB2312;腾讯体育:GBK;
2、BeautifulSoup剖析网页元素
一中爬来的网页全部只是网页的代码,需要对网页进行剖析,我剖析网页使用到一个BeautifulSoup这个模块
代码如下:
(1)使用select找出含有meta标签的元素
import requests
res = requests.get('http://tech.sina.com.cn/')
res.encoding = 'utf-8'
print(res.text)
注意:指定编码类型,爬出来的中文可能是乱码查看页面的编码类型,通过ctrl+f12中Elements代码里面的charset的赋值,可以使用ctrl+F查找
新浪新闻:UTF-8;人民网:GB2312;腾讯体育:GBK;
2、BeautifulSoup剖析网页元素
一中爬来的网页全部只是网页的代码,需要对网页进行剖析,我剖析网页使用到一个BeautifulSoup这个模块
代码如下:
from bs4 import BeautifulSoup
html_sample ='\
<html>\
<head>\
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />\
<title>新浪科技_新浪网</title>\
<meta name="keywords" content="科技,IT科技,科技新闻,互联网,移动互联网,电信,手机,iPhone,Android,软件应用,数码产品,笔记本,平板电脑,iPad,数码相机,DV,硬件,科学探索">\
<meta name="description" content="新浪科技是新浪网最重要频道之一,24小时滚动报道IT业界,电信、互联网及大众科技新闻,最及时权威的产业及事件报道平台,手机、数码、笔记本及软件下载一网打尽。">\
</head>\
</html>'
soup = BeautifulSoup(html_sample,'html.parser')
print(type(soup))
print(soup.text)
这样只是利用BeautifulSoup来去掉标签,运行结果如下<class 'bs4.BeautifulSoup'>
新浪科技_新浪网
BeautifulSoup找出所有含有特定标签的HTML元素(1)使用select找出含有meta标签的元素
from bs4 import BeautifulSoup
html_sample ='\
<html>\
<head>\
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />\
<title>新浪科技_新浪网</title>\
<meta name="keywords" content="科技,IT科技,科技新闻,互联网,移动互联网,电信,手机,iPhone,Android,软件应用,数码产品,笔记本,平板电脑,iPad,数码相机,DV,硬件,科学探索">\
<meta name="description" content="新浪科技是新浪网最重要频道之一,24小时滚动报道IT业界,电信、互联网及大众科技新闻,最及时权威的产业及事件报道平台,手机、数码、笔记本及软件下载一网打尽。">\
</head>\
</html>'
soup = BeautifulSoup(html_sample,'html.parser')
header = soup.select('meta')
print(header)
运行结果如下:[<meta content="text/html; charset=utf-8" http-equiv="Content-type"/>,
<meta content="科技,IT科技,科技新闻,互联网,移动互联网,电信,手机,iPhone,Android,软件应用,数码产品,笔记本,平板电脑,iPad,数码相机,DV,硬件,科学探索" name="keywords"/>,
<meta content="新浪科技是新浪网最重要频道之一,24小时滚动报道IT业界,电信、互联网及大众科技新闻,最及时权威的产业及事件报道平台,手机、数码、笔记本及软件下载一网打尽。" name="description"/>]
使用select找出所有id为title的元素alink = soup.select('#title')
print(alink)
使用select找出所有class为link的元素alink = soup.select('.link')
print(alink)
使用select找出所有的a tag的herf连接alinks = soup.select('a')
for link in alinks:
print(link['href'])