最近没什么事情,准备重新看一遍以前一知半解的爬虫
功能:以一个起始页开始,通过爬取网页简介的返回一个百度百科简介部分的,包含全部链接的列表,并且通过随机数,随机选取一个网站进入之后打印这个网站标题重复上述步骤递归,直到碰到一个简介中没有一个链接的百度百科网页
这里选择的初始百度百科网页是《JOJO的奇妙冒险》的百度百科,针对随机数选取采用的是随机数种子的做法,可以保证只要种子相同每次运行返回的网页标题就是相同的“随机的”网页
文章图片
首先观察一下百度百科的html
文章图片
可以看出来,简介部分的链接都是在div标签的里面并且用 之后代码如下
import random
import re
#import datetime#也可以用当前时间作为种子输入
from urllib.request import urlopen
from bs4 import BeautifulSouprandom.seed(1231241231)#这里采用的种子def getLinks(articleUrl):
html=urlopen('https://baike.baidu.com{}'.format(articleUrl))
bs=BeautifulSoup(html,'html.parser')
name=(bs.find('dd',{'class':'lemmaWgt-lemmaTitle-title'}).find('h1'))
print(name.get_text())
return bs.find('div',{'class':'lemma-summary'}).find_all('a',href=https://www.it610.com/article/re.compile('^(/item/)'))links=getLinks('/item/JOJO%E7%9A%84%E5%A5%87%E5%A6%99%E5%86%92%E9%99%A9/4422729')
while len(links)>0:
newArticle=links[random.randint(0,len(links)-1)].attrs['href']
links=getLinks(newArticle)
【python学习|【python爬虫】随机爬取百度百科并返回爬取内容的标题】运行这部分的代码结果如下:
文章图片
虽然知道最后结果可能会跟JOJO挂不上边儿,但能跑到这么远的地方我也是没想到
推荐阅读
- python学习|windows如何安装并切换不同版本的cuda,更新cuda版本
- python-Django如何可以用真实的IP访问(四)
- 各种算法的Python实现方案
- C++|Leetcode 076 最小覆盖子串 Python C++ 史上最详细题解系列
- raise ImportError(msg.format(path)) ImportError: Something is wrong with the numpy installation
- python|Anaconda 之 更换国内下载镜像
- (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escap
- python安装channels报错(" Failed building wheel for Twisted")
- 利用百度智能云结合Python体验图像识别
- Jieba库与wordcloud库的学习汇总