python爬虫入门:1--爬取维基百科词条信息

开始之前先安装我们需要的库:bs4库内的Beautiful Soup 的方法

可以用pip命令:pip install beautifulsoup4

或者在pycharm中 settings–>Project:py–>Project interpreter–>点击右侧+ –>查询并install

要爬取的维基百科url–>https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5

from urllib import request
#导入bs4模块
from bs4 import BeautifulSoup as sp
#引用re方法
import re
# 维基百科url
url = "https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5"

使用request的urlopen方法打开url并用read方法去读取

html = request.urlopen(url).read()
利用bs4库解析html,这里为了简写在上面调用时我们将beautiful soup 方法起了一个别名叫做sp

soup = sp(html,"html.parser")

下面我们用 print 语句打印 看输出结果 截取部分内容

本来是要粘贴过来的,另一个博客粘过去就挺好,这csdn就这么丑,算了 自己输出观察吧

但很多网页为了防止爬去会阻止这样的直接访问 所以我们就要去获取他们的headers作为代理
用浏览器打开需要url ,点击f12或右键检查(chrome)
点击 network –> Doc 点击f5 获取内容

拉到最后, 我们看到了我们看到 request headers内的信息 我门拉取其中2个使用
user-agent:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

accept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8

每个人 都不一样 看自己的就好
使用代理只用在原代码上稍作修改就可以 下面我贴出修改后的代码

from urllib import request
#导入bs4模块
from bs4 import BeautifulSoup as sp
#引用re方法
import re
# 维基百科url
url = "https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5"
#在浏览器下获取他们的headers信息
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'
          ,'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
}
req = request.Request(url, headers=header)
#打开并读取url内信息
html = request.urlopen(req).read()
#利用bs4库解析html
soup = sp(html,"html.parser")

下面我们需要取寻找我们需要爬取信息的页面代码

我们需要爬取的是词条的内容

所以打开url 点击f12 或者右键检查

使用选取箭头点击词条
点击词条后页面会 跳转到指定页面代码
我们观察代码:我们需要的信息 都在页面的a 标签的href 中 所以下面我们的任务就简单了 : 抓取所有的a标签中href信息

<a href="/wiki/%E5%98%89%E7%BE%A9%E5%B8%82" title="嘉义市">嘉义市</a>

用find_all方法去抓取 所有的a标签 利用正则表达式 取匹配href 中 所有以wiki开头的,我们不需要中间带有wiki的

#需要爬取的信息在网页的 a 标签中, 所以去抓取所有的a标签
listall = soup.find_all("a", href = re.compile("^/wiki/"))

我们用get_text()或者string方法获取他的title, 用list[“href”])获取他的href,输出

for list in listall:
        print (list.get_text(),"------>",list["href"])

小伙伴有没有发现2个问题:

1.获取的href 只有后半段,我们可以手都加上前半段

print (list.get_text(),”——>”,”https://zh.wikipedia.org“+list[“href”])

2.爬去的内容里面虽然都是wiki开头 但是里面有jpg类型的图片 所以我们要去除图片

在输出语句前 用re.search()方法 加上限制条件

if not re.search("\.(jpg|JPG)$", list["href"]):

输出

部分结果

维基百科 ------> https://zh.wikipedia.org/wiki/Wikipedia:%E5%85%B3%E4%BA%8E
人人可編輯 ------> https://zh.wikipedia.org/wiki/Wikipedia:%E6%AC%A2%E8%BF%8E
自由 ------> https://zh.wikipedia.org/wiki/%E8%87%AA%E7%94%B1%E5%85%A7%E5%AE%B9
941,192 ------> https://zh.wikipedia.org/wiki/Special:%E7%BB%9F%E8%AE%A1
條目 ------> https://zh.wikipedia.org/wiki/Wikipedia:%E4%BB%80%E4%B9%88%E6%98%AF%E6%9D%A1%E7%9B%AE
分类 ------> https://zh.wikipedia.org/wiki/Wikipedia:%E5%88%86%E7%B1%BB%E7%B4%A2%E5%BC%95
主题 ------> https://zh.wikipedia.org/wiki/Portal:%E9%A6%96%E9%A0%81
求助 ------> https://zh.wikipedia.org/wiki/Wikipedia:VPA
入门 ------> https://zh.wikipedia.org/wiki/Wikipedia:%E6%96%B0%E6%89%8B%E5%85%A5%E9%96%80/%E4%B8%BB%E9%A0%81
沙盒 ------> https://zh.wikipedia.org/wiki/Wikipedia:%E6%B2%99%E7%9B%92
捐款 ------> https://zh.wikipedia.org/wiki/Wikipedia:%E8%81%94%E7%B3%BB%E6%88%91%E4%BB%AC/%E6%8D%90%E6%AC%BE
 ------> https://zh.wikipedia.org/wiki/File:Chiayi_City_Montage.png
嘉義市 ------> https://zh.wikipedia.org/wiki/%E5%98%89%E7%BE%A9%E5%B8%82
中華民國 ------> https://zh.wikipedia.org/wiki/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B
臺灣省 ------> https://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3%E7%9C%81
市 ------> https://zh.wikipedia.org/wiki/%E5%B8%82_(%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B)
臺灣本島 ------> https://zh.wikipedia.org/wiki/%E8%87%BA%E7%81%A3
西南部 ------> https://zh.wikipedia.org/wiki/%E5%8D%97%E8%87%BA%E7%81%A3
都市 ------> https://zh.wikipedia.org/wiki/%E9%83%BD%E5%B8%82
嘉南平原 ------> https://zh.wikipedia.org/wiki/%E5%98%89%E5%8D%97%E5%B9%B3%E5%8E%9F

对于有帮助的童鞋们 ,麻烦点个赞呀

注明: 这篇博客是我以前写的,在我的另一个自己搭的博客上,博客炸了,重新搞一下,所以迁移一下。
还有本来是 配了好多图 加以说明的 那博客不显示了 ,好心疼。算了 将就着看吧 。我的锅我的锅

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值