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

比如要爬取起点中文网排行榜的小说简介,找到榜单网址: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. C#中as用法---转载

    转载 jiang13824690 发布于2018-07-24 11:19:00 阅读数 3302 收藏 展开 在程序中,进行类型转换时常见的事,C#支持基本的强制类型转换方法,例如  Object o ...

  2. ADV-298 和谐宿舍2 动态规划

    和谐宿舍2 问题描述 我的某室友学过素描,墙上有n张他的作品.这些作品都是宽度为1,高度不定的矩形,从左到右排成一排,且底边在同一水平线上. 宿舍评比就要来了,为了及格,我们决定买不多于m块的矩形木板 ...

  3. BEC合约整数溢出漏洞还原与分析

    一.币圈一秒,人间一年 有道是币圈一日,人间一年.这个说法又得升级了,叫币圈一秒,人间一年. 前不久,币圈又出大事啦.BEC智能合约被爆出整数溢出漏洞,导致黑客能无限印币,在一次交易中,也就那么几秒钟 ...

  4. 075、Java面向对象之定义匿名对象

    01.代码如下: package TIANPAN; class Book { // 定义一个新的类 private String title; // 书的名字 private double price ...

  5. js动态添加li,你添加的li具有你绑定的事件

    2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 <%@page i ...

  6. 八 Hibernate延迟加载&抓取策略(优化)

    面试:Hibernate效率很低,如何优化? 缓存怎么弄的,语句怎么优化? 聊聊一级缓存,聊聊抓取策略和延迟加载,聊聊批量抓取 延迟加载: 一般不单独使用,和延迟加载一起使用 延迟加载:lazy(懒加 ...

  7. 二十三 NoSql&Redis及其安装

    什么是Nosql not only sql , 不仅仅是sql,是一项全新的数据库理念,泛指非关系型的数据库. 为什么需要NoSql 解决以下问题: 1 High Performance   对数据库 ...

  8. RNN、LSTM、Seq2Seq、Attention、Teacher forcing、Skip thought模型总结

    RNN RNN的发源: 单层的神经网络(只有一个细胞,f(wx+b),只有输入,没有输出和hidden state) 多个神经细胞(增加细胞个数和hidden state,hidden是f(wx+b) ...

  9. JuJu团队12月28号工作汇报

    JuJu团队12月28号工作汇报 JuJu   Scrum 团队成员 今日工作 剩余任务 困难 飞飞 完成GUI 待安排 无 婷婷 调试代码 提升acc 无 恩升 修正evaluate 修正evalu ...

  10. 再次实践 MySQL chart【转】

    学习了 chart 结构和模板的知识后,现在重新实践一次 MySQL chart,相信会有更多收获. chart 安装前的准备 作为准备工作,安装之前需要先清楚 chart 的使用方法.这些信息通常记 ...