博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
莫烦python课程里面的bug修复;课程爬虫小练习爬百度百科
阅读量:5833 次
发布时间:2019-06-18

本文共 1062 字,大约阅读时间需要 3 分钟。

我今天弄了一下午修改这个代码,最后还是弄好了.原因是正则表达式的筛选不够准确,有时候是会带这些东西的.所以需要一个正则表达式的断言,然后还有一点是如果his里面只有一个元素就不要再pop了.

最后我把代码放上去.为了突出问题我选的开始网址很特殊他没有子链接.
from urllib.request import urlopen
from bs4 import BeautifulSoup
from urllib.request import urlopen
import re
import random
base_url = ""
his = ["/item/%E9%B8%A1%E7%9F%A2%E8%97%A4/931175?fromtitle=%E9%B8%A1%E5%B1%8E%E8%97%A4&fromid=374872"]
for i in range(200):
url = base_url + his[-1]
print (77777777)
html = urlopen(url).read().decode('utf-8')
print (8888888888)
soup = BeautifulSoup(html, features='lxml')
print (9999999)
print(i, soup.find('h1').get_text(), ' url: ',base_url+ his[-1])
# find valid urls
sub_urls = soup.find_all("a", {"target": "_blank", "href": re.compile("(?=^/item)/item/(%.{2})+$")})
print ('爬到了'+str(i+1))
if len(sub_urls) != 0 :
his.append(random.sample(sub_urls, 1)[0]['href'])
else:
if len(his)==1:
pass
else:
# no valid sub link found
his.pop()
#到底错在了哪里???为什么多跑几遍,很小概率可能会发生1.无限重复同一个url 2.死循环 3.当然也有可能无限2个url来回跳
print ('666666')
#已经修改好了,有错误可以继续回复我

转载于:https://www.cnblogs.com/zhangbo2008/p/8413789.html

你可能感兴趣的文章
ssh命令使用
查看>>
第一次作业 4班卢炳武
查看>>
const int * 与 int *const
查看>>
抽象类的调用
查看>>
libjpeg.a exists or that its path is correct
查看>>
C# Stream
查看>>
实现可折叠的分组tableview
查看>>
黄聪:解决Bootstrap模态框(modal)弹出后页面跑到顶部的办法
查看>>
输出流对象
查看>>
深入浅出多线程系列之三:线程池
查看>>
Elasticsearch 核心插件Kibana 本地文件包含漏洞分析(CVE-2018-17246)
查看>>
github 使用网址
查看>>
分布式并行关联规则挖掘
查看>>
安全测试回顾(三)
查看>>
经典图书目录(不断更新)
查看>>
dedecms的arclist循环中判断第一个li添加css,否则不加
查看>>
若干经典基础算法题目练习
查看>>
CentOS下安装实时检測网络带宽的小工具bmon
查看>>
Oracle 的PL/SQL语言使用
查看>>
水晶头
查看>>