https://baike.baidu,com/view/? 方式尽可能遍历百科词条

# -*- coding: utf-8 -*-
# @time : 2019/7/1  14:56
import requests
import time

baseUrl = 'http://baike.baidu.com/view/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'}
countToSleep = 300

writer = open("itemUrl.txt", "a+", encoding="utf8")   //存储可以访问的词条url
filedWriter = open("filedItemUrl.txt", "a+", encoding="utf8")     //存储由于百度服务端防爬策略而失败的 数字,最后再通过组装url进行采集
errorNumber = open("errorNumberItemUrl.txt", "a+", encoding="utf8")    //组装的url不存在
for i in range(1, 15500000):
    try:
        countToSleep -= 1
        if countToSleep > 0:
            response = requests.get(baseUrl + str(i), headers=headers)
            if 'error' in response.url:
                errorNumber.write(str(i) + '\n')
            else:
                writer.write(response.url + '\n')
                print("第" + str(i) + "个;当前url:" + response.url)
    except:
        filedWriter.write(str(i) + '\n')
        print("服务端断开连接,重新连接爬取...")
        time.sleep(4)
    finally:
        if not (countToSleep > 0):
            time.sleep(2)
            print("休息-------------------")
            countToSleep = 300

            writer.flush()
            errorNumber.flush()
            filedWriter.flush()

  

转载于:https://www.cnblogs.com/dhName/p/11115696.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
百度百约500万条词条,可用于语义关联或简单的知识网络建立,xml格式,解压后638M,请不要用记事本直接打开,我是用UE打开的,sublime好像会有乱码,文件内容示例如下: =1 <TITLE>=百度百 =百度,百度百,网络,百全书,百词典 =百度知道;贴吧;百度空间;百度地图;百度新闻搜索;百度图片;百度mp3;百度Hi;百度工具栏;百度影视;百度邮编搜索;百度黄页搜索;百度杀毒;百度语音搜索;利尔百全书;苏联大百全书;汇吃百;维基百;百度视频;百度蜘蛛;百度文库;互动百;百度文档;百度文化共享搜索;百度盲道;百度会员;百度搜藏;百度TV;百全书;知识掌门人;百度游戏;百度有啊;张震;友; =http://baike.baidu.com/view/1.htm =2 <TITLE>=词条 =百度,百度百 =相关词条; =http://baike.baidu.com/view/2.htm =3 <TITLE>=编辑实验 =百度,百度百,帮助,词条,编辑 =词条;百度; =http://baike.baidu.com/view/3.htm =4 <TITLE>=馒头 =食品,饮食,面食,食谱,蒸馍 =大饼;油条;面包;饺子;花卷;包子;麻花;食品;主食;糯米饭;蛋糕;鲜肉包;米粥;面条;凉拌菜;年糕;饼干;窝头;粽子;烤饼;酥饼;汤圆;烧饼; =http://baike.baidu.com/view/4.htm =6 <TITLE>=雁荡山 =地理,旅游,旅游景点,自然景观,地质公园 =华山;泰山;普陀山;恒山;嵩山;莫干山;浣江;衡山;括苍山;双龙洞;雪窦山;天台山;天目山;楠溪江;天柱山;景宁香炉山;乌镇;杭州西湖;泽雅;白水洋;武夷山;洞宫山;桃花岛;三清山;黄山;新安江水库;崂山区;溪口;太姥山;南麂列岛;野鹤湫;庐山;江心屿;瑶溪;朱家尖;石桅岩;绍兴县;杨家溪;仙岩山;仙都风景区;大龙湫;三折瀑;五岳; =http://baike.baidu.com/view/6.htm =7 <TITLE>=灵峰 =风景,雁荡山,地理,旅游,温州 = =http://baike.baidu.com/view/7.htm
把字符串型 http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666529,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666269,http://baike.baidu.com/item/%E5%A4%A7%E9%BE%99%E6%B9%AB/85909,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24132384,http://baike.baidu.com/view/1.htm,http://baike.baidu.com/item/%E5%A4%A7%E9%BE%99%E6%B9%AB/23583829,http://baike.baidu.com/view/4.htm,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/85904,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666716,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/57049628,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/49728219,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24333588,http://baike.baidu.com/view/2.htm,http://baike.baidu.com/view/9.htm,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24359580,http://baike.baidu.com/view/10.htm,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666529,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666269,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/85906,http://baike.baidu.com/item/%E5%A4%A7%E9%BE%99%E6%B9%AB/85909,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24132384,http://baike.baidu.com/item/%E5%A4%A7%E9%BE%99%E6%B9%AB/23583829,http://baike.baidu.com/view/4.htm,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/85904,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666716,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/57049628,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/49728219,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24333588,http://baike.baidu.com/view/2.htm,http://baike.baidu.com/view/9.htm,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24359580,http://baike.baidu.com/view/10.htm 用逗号分隔,再去重后遍
最新发布
06-09
好的,我理解了你的要求。这个问题可以分为两个步骤,第一个是将字符串分割成多个链接,第二个是去重后遍。这是我的解决方案: ```python # 将字符串拆分成多个链接 link_str = "http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666529,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666269,http://baike.baidu.com/item/%E5%A4%A7%E9%BE%99%E6%B9%AB/85909,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24132384,http://baike.baidu.com/view/1.htm,http://baike.baidu.com/item/%E5%A4%A7%E9%BE%99%E6%B9%AB/23583829,http://baike.baidu.com/view/4.htm,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/85904,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666716,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/57049628,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/49728219,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24333588,http://baike.baidu.com/view/2.htm,http://baike.baidu.com/view/9.htm,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24359580,http://baike.baidu.com/view/10.htm,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666529,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666269,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/85906,http://baike.baidu.com/item/%E5%A4%A7%E9%BE%99%E6%B9%AB/85909,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24132384,http://baike.baidu.com/item/%E5%A4%A7%E9%BE%99%E6%B9%AB/23583829,http://baike.baidu.com/view/4.htm,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/85904,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666716,http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/57049628,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/49728219,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24333588,http://baike.baidu.com/view/2.htm,http://baike.baidu.com/view/9.htm,http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24359580,http://baike.baidu.com/view/10.htm" links = link_str.split(",") # 去重后遍链接 visited = set() for link in links: if link not in visited: visited.add(link) print(link) ``` 这个代码会输出: ``` http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666529 http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666269 http://baike.baidu.com/item/%E5%A4%A7%E9%BE%99%E6%B9%AB/85909 http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24132384 http://baike.baidu.com/view/1.htm http://baike.baidu.com/item/%E5%A4%A7%E9%BE%99%E6%B9%AB/23583829 http://baike.baidu.com/view/4.htm http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/85904 http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/22666716 http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/57049628 http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/49728219 http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24333588 http://baike.baidu.com/view/2.htm http://baike.baidu.com/view/9.htm http://baike.baidu.com/item/%E9%9B%81%E8%8D%A1%E5%B1%B1/24359580 http://baike.baidu.com/view/10.htm http://baike.baidu.com/item/%E7%81%B5%E5%B3%B0/85906 ``` 这些链接已经去重并且按照出现的顺序遍了一遍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值