首页 > 编程知识 正文

python爬虫实例100例,python爬虫实例

时间:2023-05-06 10:01:20 阅读:11238 作者:3017

虽然最近做项目需要python,但是我花了三天时间重新捡起了python,终于获得了python的知识。

而且我根据爬行动物的基本原理拿过一本小说。 其他拿小说的方法也很相似。 结果,请参阅下载个人资源。 (您试图将下载点设置为0,但CSDN至少设置为2个点。 如果没有积分的话,请追加我的qq请求那本小说。 )。

*爬虫原理(1、模拟人打开小说页面

2、保存页面

3、保存网络关键词

4、循环** 环境:python2.7,安装BeautifulSoup,win7-64bit,sublime text3

必要的基本知识(这些基本的网页知识以后再总结,现在百度不知道可以) :HTML5基本知识),BeautifulSoup基本知识。

小说首页(3358 www.xinshubao.net/0/927/45819.html )魂破九天) ) ) ) ) ) ) ) )。

爬本页面内容分析:通过分析网址分为两部分:地址头为:http://www.xinshubao.net/0/927/ 地址尾为45819.html(可以通过网页获取到)

代码如下。

# coding : utf-8 importsysreload (sys ) sys.setdefaultencoding(utf8 ) ) from bs4 importbeautifulsoupimporturlibdefgeteteteteteteted=page.read ) returnhtmlurlhead=' http://www.xinshubao.net/0/927/' URL end=' 45819.html ' URL=urlheadurleadurlendendend 分析后网页的结构str1=gethtmlcode(URL ) soup=beauttton输出' html.parser ' (temp=soup.prett ify ) ) printtempreturnsoury

1、小说的主要内容在div id='content '标签上

div id='content '第一章狼心狗肺br/br /纵横帝国,清风镇。 br/br /“头疼! ”br/br/xfdxt感觉大脑刺痛,无数的信息充斥在脑海里! br/br /年前,秦家山! br/br /同年,秦战海之子,年仅五岁的xfdxt觉醒武魂,且百年未见的六星火龙武魂,被誉为清风镇数百年来的第一天! br/br /烂漫的鸽子锦上添花,家长倪清脆的大雁许配给了xfdxt! br/br /但让人吃惊的是,不知怎的,有才的xfdxt花了10年,实力依然停留在武人的重量上。 xfdxt更是取消了心仪的冬瓜地位! 另一方面,与xfdxt订婚的清脆大雁,越来越漂亮,被称为清风镇第一美nv! br/br /且是十年练就武人九重的清风镇数一二天才,与xfdxt形成鲜明对比! br/br /清风镇人人叹息。 真是一朵花cha在牛粪上! 脚本S3 (; /script br /但是,让所有人感到困惑的是,叶家似乎并不打算和xfdxt解除婚约…… br /! 省略-- xfdxt,兴奋地发现br/br//div 2,获取该标签的内容,通过正则表达式。 (需要导入re ),代码:

defresolve(URL ) : html=parser (URL ) content=html.find_all )、id=' content ' (content=str ) content ) )

= content.replace('<br />','') print contentresolve(url)

结果:

可以看到这个中间还有其他标签<script>s3();</script>这些标签不是小说的内容应该删除,
2.1、将标签内容替换为空:

def resolve(url): html=parser(url) content = html.find_all('div',id='content') content = str(content[0]) content = content.replace('<br />','') # print content match = re.compile('<(.*)>') taglist = match.findall(content) for tag in taglist: tag = '<' + tag +'>' content = content.replace(tag,'') content = content.replace('n','') print contentresolve(url)

结果:


3、找到下一页地址
根据网页源代码可以找到下一页的地址:

def nextUrl(url): html = str(parser(url)) pattern = re.compile('<a rel="external nofollow" href="(.*).html') chapterList = pattern.findall(html) url = urlHead + chapterList[1] + '.html' print url return urlnextUrl(url)

运行结果:http://www.xinshubao.net/0/927/45819_2.html
4、将两页连在一起

def resolve(url): html = parser(url) content = html.find_all('div',id='content') content = str(content[0]) # print content content = content.replace('<br />','') # print content pattern = re.compile('<(.*)>') text = pattern.findall(content) # print text for line in text: line = '<' + line +'>' content = content.replace(line,'') content = content.replace('n','') tmp = nextUrl(url) index = tmp.find('_2') if -1 == index: #如果是不同章节之间就空一行 content = content + 'nn' print content return content

5、抓取整篇小说

def main(url): flag = True txt = '' count = 0 #防止网页吊死 while flag: try: index = url.find('9316313_2') #最后一页 f = open(u'魂破九天.txt','a+') #追加 tempTxt = resolve(url) f.write(tempTxt) f.close() url = nextUrl(url) if -1 != index or count == 2000: flag = False except Exception as e: raise else: pass finally: count = count + 1 print u'第%0.1f章 网页地址 %s'% (count/2.0,url)

好了整个爬取网页小说的教程到此结束!
全部代码如下:

#coding:utf-8import reimport sysreload(sys)sys.setdefaultencoding('utf8')from bs4 import BeautifulSoupimport urllibdef getHtmlCode(url): page = urllib.urlopen(url) html = page.read() return htmlurlHead = 'http://www.xinshubao.net/0/927/'urlEnd = '45819.html'url = urlHead + urlEnddef parser(url): str1 = getHtmlCode(url) soup = BeautifulSoup(str1,"html.parser") temp = soup.prettify() return soupdef nextUrl(url): html = str(parser(url)) pattern = re.compile('<a href="(.*).html') chapterList = pattern.findall(html) url = urlHead + chapterList[1] + '.html' return urldef resolve(url): html=parser(url) content = html.find_all('div',id='content') content = str(content[0]) content = content.replace('<br />','') # print content match = re.compile('<(.*)>') taglist = match.findall(content) for tag in taglist: tag = '<' + tag +'>' content = content.replace(tag,'') content = content.replace('n','') urlNext = nextUrl(url) isSameChapter = urlNext.find('_2') if -1 == isSameChapter: content = content + 'nn' # print content return contentdef main(url): flag = True txt = '' count = 0 #防止网页吊死 while flag: try: index = url.find('9316313_2') #最后一页 f = open(u'魂破九天.txt','a+') #追加 tempTxt = resolve(url) f.write(tempTxt) f.close() url = nextUrl(url) if -1 != index or count == 2000: flag = False except Exception as e: raise else: pass finally: count = count + 1 print u'第%0.1f章 网页地址 %s'% (count/2.0,url)main(url)

结果图:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。