当前位置:首页 » 编程语言 » python动态网页的抓取

python动态网页的抓取

发布时间: 2023-05-14 10:44:38

① 如何用python爬取动态加载的网页数据

动态网页抓取都是典型的办法

  1. 直接查看动态网页的加载规则。如果是ajax,则将ajax请求找出来给python。 如果是js去处后生成的URL。就要阅读JS,搞清楚规则。再让python生成URL。这就是常用办法

  2. 办法2,使用python调用webkit内核的,IE内核,或者是firefox内核的浏览器。然后将浏览结果保存下来。通常可以使用浏览器测试框架。它们内置了这些功能

  3. 办法3,通过http proxy,抓取内容并进行组装。甚至可以嵌入自己的js脚本进行hook. 这个方法通常用于系统的反向工程软件

② python怎么获取动态网页链接

四中方法:

'''
得到当前页面所有连接
'''

import requests

import re
from bs4 import BeautifulSoup
from lxml import etree
from selenium import webdriver

url = 'http://www.ok226.com'
r = requests.get(url)
r.encoding = 'gb2312'

# 利用 re
matchs = re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')" , r.text)
for link in matchs:
print(link)

print()

# 利用 BeautifulSoup4 (DOM树)
soup = BeautifulSoup(r.text,'lxml')
for a in soup.find_all('a'):
link = a['href']
print(link)

print()

# 利用 lxml.etree (XPath)
tree = etree.HTML(r.text)
for link in tree.xpath("//@href"):
print(link)

print()

# 利用selenium(要开浏览器!)
driver = webdriver.Firefox()
driver.get(url)
for link in driver.find_elements_by_tag_name("a"):
print(link.get_attribute("href"))
driver.close()

③ python3 怎样爬取动态加载的网页信息

方法1

寻找页面中的xhr请求, 并得到实际的请求参数. 直接获取相关搜索的请求返回代码, 然后进行数据整理.

方法2

模拟浏览器操作, 比如使用Selenium 模块.

④ python爬虫怎么获取动态的网页源码

一个月前实习导师布置任务说通过网络爬虫获取深圳市气象局发布的降雨数据,网页如下:

心想,爬虫不太难的,当年跟zjb爬煎蛋网无(mei)聊(zi)图的时候,多么清高。由于接受任务后的一个月考试加作业一大堆,导师也不催,自己也不急。

但是,导师等我一个月都得让我来写意味着这东西得有多难吧。。。今天打开一看的确是这样。网站是基于Ajax写的,数据动态获取,所以无法通过下载源代码然后解析获得。

从某不良少年写的抓取淘宝mm的例子中收到启发,对于这样的情况,一般可以同构自己搭建浏览器实现。phantomJs,CasperJS都是不错的选择。

导师的要求是获取过去一年内深圳每个区每个站点每小时的降雨量,执行该操作需要通过如上图中的历史查询实现,即通过一个时间来查询,而这个时间存放在一个hidden类型的input标签里,当然可以通过js语句将其改为text类型,然后执行send_keys之类的操作。然而,我失败了。时间可以修改设置,可是结果如下图。

为此,仅抓取实时数据。选取python的selenium,模拟搭建浏览器,模拟人为的点击等操作实现数据生成和获取。selenium的一大优点就是能获取网页渲染后的源代码,即执行操作后的源代码。普通的通过 url解析网页的方式只能获取给定的数据,不能实现与用户之间的交互。selenium通过获取渲染后的网页源码,并通过丰富的查找工具,个人认为最好用的就是find_element_by_xpath("xxx"),通过该方式查找到元素后可执行点击、输入等事件,进而向服务器发出请求,获取所需的数据。

[python]view plain

  • #coding=utf-8

  • fromtestStringimport*

  • fromseleniumimportwebdriver

  • importstring

  • importos

  • fromselenium.webdriver.common.keysimportKeys

  • importtime

  • importsys

  • default_encoding='utf-8'

  • ifsys.getdefaultencoding()!=default_encoding:

  • reload(sys)

  • sys.setdefaultencoding(default_encoding)

  • district_navs=['nav2','nav1','nav3','nav4','nav5','nav6','nav7','nav8','nav9','nav10']

  • district_names=['福田区','罗湖区','南山区','盐田区','宝安区','龙岗区','光明新区','坪山新区','龙华新区','大鹏新区']

  • flag=1

  • while(flag>0):

  • driver=webdriver.Chrome()

  • driver.get("hianCe/")

  • #选择降雨量

  • driver.find_element_by_xpath("//span[@id='fenqu_H24R']").click()

  • filename=time.strftime("%Y%m%d%H%M",time.localtime(time.time()))+'.txt'

  • #创建文件

  • output_file=open(filename,'w')

  • #选择行政区

  • foriinrange(len(district_navs)):

  • driver.find_element_by_xpath("//div[@id='"+district_navs[i]+"']").click()

  • #printdriver.page_source

  • timeElem=driver.find_element_by_id("time_shikuang")

  • #输出时间和站点名

  • output_file.write(timeElem.text+',')

  • output_file.write(district_names[i]+',')

  • elems=driver.find_elements_by_xpath("//span[@onmouseover='javscript:changeTextOver(this)']")

  • #输出每个站点的数据,格式为:站点名,一小时降雨量,当日累积降雨量

  • foreleminelems:

  • output_file.write(AMonitorRecord(elem.get_attribute("title"))+',')

  • output_file.write(' ')

  • output_file.close()

  • driver.close()

  • time.sleep(3600)

  • 文件中引用的文件testString只是修改输出格式,提取有效数据。
  • [python]view plain

  • #Encoding=utf-8

  • defOnlyCharNum(s,oth=''):

  • s2=s.lower()

  • fomart=',.'

  • forcins2:

  • ifnotcinfomart:

  • s=s.replace(c,'')

  • returns

  • defAMonitorRecord(str):

  • str=str.split(":")

  • returnstr[0]+","+OnlyCharNum(str[1])


  • 一小时抓取一次数据,结果如下:

⑤ 如何用python爬取js动态生成内容的页面

抓取js动态生成的内容的页面有两种基本的解决方案

1用dryscrape库动态抓取页面
js脚本是通过浏览器来执行并返回信息的,所以,抓取js执行后的页面,一个最直接的方式就是用python模拟浏览器的行为。WebKit 是一个开源的浏览器引擎,python提供了许多库可以调用这个引擎,dryscrape便是其中之一,它调用webkit引擎来处理包含js等的网页!

2 selenium web测试框架

selenium是一个web测试框架,它允许调用本地的浏览器引擎发送网页请求,所以,它同样可以实现抓取页面的要求。

⑥ python爬虫怎么做

大到各类搜索引擎,小到日常数据采集,都离不开网络爬虫。爬虫的基本原理很简单,遍历网络中网页,抓取感兴趣的数据内容。这篇文章会从零开始介绍如何编写一个网络爬虫抓取数据做告宏,然后会一步步逐渐完善爬虫的抓取功能。

工具安装

我们需要安装python,python的requests和BeautifulSoup库。我们用Requests库用抓取网页的内容,使用BeautifulSoup库来从网页中提取数据。

安装python

运行pipinstallrequests

运行pipinstallBeautifulSoup

抓取网页

完成必要工具安装后,我们正式开始编写我们的爬虫。我们的第一个任务是要抓取所有豆瓣上的图书信息。我们以/subject/26986954/为例,首先看看开如何抓取网页的内容。

使用python的requests提供的get()方法我们可以非常简单的获取的指定网页的内纯册容,代码如下:

提取内容

抓取到网页的内容后,我们要做的就是提取出我们想要的内容。在我们的第一个例子中,我们只需要提取书名。首先我们导入BeautifulSoup库,使用BeautifulSoup我们可以非常简单的提取网页的特定内容。

连续抓取网页

到目前为止,我们已经可以抓取单个网页的内容了,现在让我们看看如何抓取整个网站的内容。我们知道网页之间是通过超链接互相连接在一起的,通过链接我们可以访问整个网络。所以我们可以从每个页面提取出包含指向其它网页的链接,然后重复的对新链接进行抓取。

通过以上几步我们就可以写出一个最原始的爬虫。在理解了爬虫原理的基础上,我们可以进一步对爬虫进行完善。

写过一个系列关于爬虫的文章:/i6567289381185389064/。感兴趣的可以前往查看。

Python基本环境的搭建,爬虫的基本原理以及爬虫的原型

Python爬虫入门(第1部分)

如何使用BeautifulSoup对网页内容进行提取

Python爬虫入门(第2部分)

爬虫运行时数据的存储数据,以SQLite和MySQL作为示例

Python爬虫入门(第3部分)

使用seleniumwebdriver对动态网页进行抓取

Python爬虫入门(第4部分)

讨论了如何处理网站的反爬虫策略

Python爬友如虫入门(第5部分)

对Python的Scrapy爬虫框架做了介绍,并简单的演示了如何在Scrapy下进行开发

Python爬虫入门(第6部分)

⑦ 如何用python爬取网站数据

这里简单介绍一下吧,以抓取网站静态、动态2种数据为慧返拍例,实验环境win10+python3.6+pycharm5.0,主要内容如下:

抓取网站静态数据(数据在网页源码中):以糗事网络网站数据为例

1.这里假设我们抓取的数据如下,主要包括用户昵称、内容、好笑数和评论数这4个字段,如下:

对应的网页源码如下,包含我们所需要的数据:

2.对应网页结构,主要代码如下,很简单,主要用到requests+BeautifulSoup,其中requests用于请求页面,BeautifulSoup用于解析页面:

程序运行截图如下,已经成功爬取到数据:

抓取网站动态数据(数据不在网页源码中,json等文件中):以人人贷网站数据为例

1.这里假设我们爬取的是债券数据,主要包括年利率世型、借款标题、期限、金额和进度这5个字段信息,截图如下:

打开网页源码中,可以发现数据不在网页源码中,按F12抓包分析时,才发现在一个json文件中,如下:

2.获取到json文件的url后,我们就可以爬取对应数据了,这里使用的包与上面类似,因为是json文件,所以还用了json这个包(解析json),主要内容如下:

程序运行截图如下,前羡已经成功抓取到数据:

至此,这里就介绍完了这2种数据的抓取,包括静态数据和动态数据。总的来说,这2个示例不难,都是入门级别的爬虫,网页结构也比较简单,最重要的还是要会进行抓包分析,对页面进行分析提取,后期熟悉后,可以借助scrapy这个框架进行数据的爬取,可以更方便一些,效率更高,当然,如果爬取的页面比较复杂,像验证码、加密等,这时候就需要认真分析了,网上也有一些教程可供参考,感兴趣的可以搜一下,希望以上分享的内容能对你有所帮助吧。

⑧ 从零开始学Python-使用Selenium抓取动态网页数据

AJAX(Asynchronouse JavaScript And XML:异步JavaScript和XML)通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新,这意味着可以在不重带洞新加载整个网页的情况下,对网页的某部分进行局部更新。传统的网页(不使用Ajax)如果需要更新内容,必蠢者枯须重载整个网页页面。

因为传统的网页在传输数据格式方面,使用的是 XML 语法,因此叫做 AJAX ,其实现在数据交互基本上都是使用 JSON 。使用AJAX加载的数据,即使使用了JS将数据渲染到了浏览器中,在 右键->查看网页源代码 还是不能看到通嫌隐过ajax加载的数据,只能看到使用这个url加载的html代码。

法1:直接分析ajax调用的接口。然后通过代码请求这个接口。

法2:使用Selenium+chromedriver模拟浏览器行为获取数据。

Selenium 相当于是一个机器人。可以模拟人类在浏览器上的一些行为,自动处理浏览器上的一些行为,比如点击,填充数据,删除cookie等。 chromedriver 是一个驱动 Chrome 浏览器的驱动程序,使用他才可以驱动浏览器。当然针对不同的浏览器有不同的driver。以下列出了不同浏览器及其对应的driver:

现在以一个简单的获取网络首页的例子来讲下 Selenium 和 chromedriver 如何快速入门:


参考:Selenium的使用


直接直接分析ajax调用的接口爬取

selenium结合lxml爬取

⑨ python 如何抓取动态页面内容

下面开始说一下本文抓取动态页面数据的相关工具和库:
1. python 2.7
2. pyqt

3. spynner (在安装过程中,其他的一些依赖库也会自动上网下载安装)
4. BeautifulSoup
5. ide工具是pycharm(当然这个只是个人喜好,也可以使用其他的ide工具)

以上几个工具都可以网络找到,python现在出了3.x版本的,但是由于众多第三方库或架构都没有兼容,并且后续要使用到的爬虫框架scrapy也是没有支持3.x版本,因此还是建议使用2.7版本吧。
spynner和BeautifulSoup下载后,都可以cd到解压出来的目录,然后使用python setup.py install来完成安装,需要注意的是spynner依赖pyqt,所以一定要安装pyqt,否则无法使用spynner。

下面使用一个具体是例子来说明一下spynner和BeautifulSoup的使用,我们就以爬取京东页面上的一些产品数据来说明如何爬取动态页面数据(当然,如果我们过于频繁的爬京东,估计还是有可能被京东将我们ip拉黑的)。

热点内容
荣威和别克哪个配置好 发布:2025-07-17 20:56:03 浏览:698
数据库的基本概念 发布:2025-07-17 20:42:02 浏览:767
51单片机c语言pdf 发布:2025-07-17 20:41:51 浏览:879
智教云脚本 发布:2025-07-17 20:24:21 浏览:259
a58主板怎么配置最完美 发布:2025-07-17 20:23:08 浏览:390
脚本文件怎么打开 发布:2025-07-17 20:20:39 浏览:142
安卓手机如何导出酷狗音乐 发布:2025-07-17 20:01:27 浏览:60
日语怎么访问 发布:2025-07-17 20:01:24 浏览:923
java清除缓存数据 发布:2025-07-17 20:00:49 浏览:487
5s怎么把相册设置密码 发布:2025-07-17 19:55:18 浏览:261