【python爬虫】随机爬取百度百科并返回爬取内容的标题

最近没什么事情,准备重新看一遍以前一知半解的爬虫
功能:以一个起始页开始,通过爬取网页简介的返回一个百度百科简介部分的,包含全部链接的列表,并且通过随机数,随机选取一个网站进入之后打印这个网站标题重复上述步骤递归,直到碰到一个简介中没有一个链接的百度百科网页

这里选择的初始百度百科网页是《JOJO的奇妙冒险》的百度百科,针对随机数选取采用的是随机数种子的做法,可以保证只要种子相同每次运行返回的网页标题就是相同的“随机的”网页
【python爬虫】随机爬取百度百科并返回爬取内容的标题_第1张图片

首先观察一下百度百科的html
【python爬虫】随机爬取百度百科并返回爬取内容的标题_第2张图片
可以看出来,简介部分的链接都是在div标签的里面并且用 之后代码如下

import random
import re
#import datetime#也可以用当前时间作为种子输入
from urllib.request import urlopen
from bs4 import BeautifulSoup

random.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=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爬虫】随机爬取百度百科并返回爬取内容的标题_第3张图片
虽然知道最后结果可能会跟JOJO挂不上边儿,但能跑到这么远的地方我也是没想到

你可能感兴趣的:(python学习,#python爬虫)