当需要的信息要经过两个链接才能打开的时候,就需要用到嵌套爬取。

比如要爬取起点中文网排行榜的小说简介,找到榜单网址:https://www.qidian.com/all?orderId=&style=1&pageSize=20&siteid=1&pubflag=0&hiddenField=0&page=1

将榜单上的小说链接爬出来,在从小说链接里面爬小说简介

import pymysql
import requests
from hashlib import md5
import re
import os #获取网页源代码
def get_one_page(url):
# 设置请求头,防止被网站屏蔽
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)\
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
}
try:
r = requests.get(url, headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except requests.HTTPError as e:
print("由于某种原因获取页面出现错误!"+str(e)) #爬出目标信息所在的网址
def parse_page1(url,list):
#获取网页内容
html=get_one_page(url)
#将正则表达式编译成正则表达式对象
pattern=re.compile('<h4><a href="(.*?)" target="_blank" data-eid',re.S)
#正则表达式1匹配的是目标信息的网址
contents = re.findall(pattern, html)
for i in contents:
list.append(i)#向列表添加对象
return list #从网址中爬出目标信息
def parse_page2(url,list):#信息
#获取网页内容
url='https:'+url#############要注意爬出的网址是否完整,不完整记得补全,否则会出错
html=get_one_page(url)
#将正则表达式编译成正则表达式对象
pattern=re.compile('<p class="intro">(.*?)</p>',re.S)
#正则表达式2匹配的是目标信息
contents = re.findall(pattern, html)
for i in contents:
list.append(i)#向列表添加对象
return list # info_list存的是目标信息的网址
info_list=[] start_url='https://www.qidian.com/all'
info_list=parse_page1(start_url,info_list) # range()包头不包尾`
for i in range(,):#range(,,-),-1表示顺序递减
url = 'https://www.qidian.com/all?orderId=&style=1&pageSize=20&siteid=1&pubflag=0&hiddenField=0&page=' + str(i)
info_list = parse_page1(url, info_list) #输出目标网址 cnt=
for i in info_list:
cnt=cnt+
i='https:'+i
print(i) #输出网址数量 print("一共有"+str(cnt)+"条数据") # x_list存的是目标信息,从目标信息所在的网址爬出需要的目标信息
x_list=[]
for i in info_list:
x_list=parse_page2(i,x_list) #输出目标信息
for i in x_list:
print(i)
#如果爬的数量比较多,要等久一会才有输出

python 嵌套爬取网页信息的更多相关文章

  1. Python爬取网页信息

    Python爬取网页信息的步骤 以爬取英文名字网站(https://nameberry.com/)中每个名字的评论内容,包括英文名,用户名,评论的时间和评论的内容为例. 1.确认网址 在浏览器中输入初 ...

  2. [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

    [python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...

  3. python学习之——爬取网页信息

    爬取网页信息 说明:正则表达式有待学习,之后完善此功能 #encoding=utf-8 import urllib import re import os #获取网络数据到指定文件 def getHt ...

  4. 常用正则表达式爬取网页信息及HTML分析总结

    Python爬取网页信息时,经常使用的正则表达式及方法. 1.获取<tr></tr>标签之间内容 2.获取<a href..></a>超链接之间内容 3 ...

  5. python之爬取网页数据总结(一)

    今天尝试使用python,爬取网页数据.因为python是新安装好的,所以要正常运行爬取数据的代码需要提前安装插件.分别为requests    Beautifulsoup4   lxml  三个插件 ...

  6. Python简单爬取图书信息及入库

    课堂上老师布置了一个作业,如下图所示: 就是简单写一个借书系统. 大概想了一下流程,登录-->验证登录信息-->登录成功跳转借书界面-->可查看自己的借阅书籍以及数量... 登录可以 ...

  7. python动态爬取网页

    简介 有时候,我们天真无邪的使用urllib库或Scrapy下载HTML网页时会发现,我们要提取的网页元素并不在我们下载到的HTML之中,尽管它们在浏览器里看起来唾手可得. 这说明我们想要的元素是在我 ...

  8. python爬虫——爬取网页数据和解析数据

    1.网络爬虫的基本概念 网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序.只要浏览器能够做的事情,原则上,爬虫都能够做到. 2 ...

  9. 用shell脚本爬取网页信息

    有个小需求,就是爬取一个小网站一些网页里的某些信息,url是带序号的类似的,不需要写真正的spider,网页内容也是差不多的 需要取出网页中<h1></h1>中间的字符串,而且 ...

随机推荐

  1. No module named PIL

    ImportError: No module named PIL 错误 的解决方法: 安装Pillow: pip install Pillow

  2. Go语言 | 哪些大公司在用go语言?

    Go大概09年面世以来,已经8年了,也算是8年抗战.在这8年中,已经有很多公司开始使用Go语言开发自己的服务,甚至完全转向Go开发,也诞生了很多基于Go的服务和应用,比如Dokcer.k8s等,现在我 ...

  3. Adroid ViewPage+GridView实现每页6个元素,三页滑动切换

    //}//public class MainActivity extends Activity {// private static final float APP_PAGE_SIZE = 16.0f ...

  4. java中将图片上传到配置好的ftp服务器上

    测试用例: @Test public void testFtp() throws Exception { //1.连接ftp服务器 FTPClient ftpClient = new FTPClien ...

  5. dstat 监控命令详解

    一.工具介绍 dstat的man手册对于该工具的解释: dstat - versatile tool for generating system resource statistics 系统资源多用途 ...

  6. jmeter学习笔记---循环控制器计数器函数助手

    循环控制器与计数器,以及函数助手需要配合使用,实现循环 循环控制器的“循环次数”输入最大循环次数的参数 计数器:除输入最大值外,还需要输入“引用名称”,供后续请求使用 请求中,如果需要实现循环,需要借 ...

  7. 前端学习笔记系列一:6 一种新的css预编译器stylus

    stylus是 CSS 的预处理框架.CSS 预处理,顾名思义,预先处理 CSS.那 stylus 咋预先处理呢?stylus 给 CSS 添加了可编程的特性,也就是说,在 stylus 中可以使用变 ...

  8. Slim安装以及使用

    最近在用backbone.js 做东西,因为牵扯到REST services 所以需要后台支持,此处选择了php.Slim 是php的一个框架. 貌似国内文章对此的介绍比较少,在安装Slim的过程中出 ...

  9. spring bean容器学习

    bean是Spring种最核心的东西 ,如果说Spring是个水桶的话,bean就是桶里面的水,桶里面没有水也就没有意义了. public class MyTestBean { private Str ...

  10. 判断ES数据是否更新成功

    参考:https://stackoverflow.com/questions/38928991/how-to-detect-if-a-document-update-in-elasticsearch- ...