python爬url
⑴ 如何用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爬虫怎么获取到的网站的所有url
首先我们可以先获取要下载图片的整个页面信息。
getjpg.py
#coding=utf-8
import urllib
def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html
print html
Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据。首先,我们定义了一个getHtml()函数:
urllib.urlopen()方法用于打开一个URL地址。
read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,并把整个页面下载下来。执行程序就会把整个网页打印输出。
⑶ 【壹】Python爬虫入门——认识URL
【系列前言】前段时间李响同学入门了一些Python的基础知识,觉得一直在IDLE里print一些算法题有一些枯燥,所以决定通过学习爬虫来提高自己的兴趣。而且最近确实有一些重复性劳动,想使用爬虫简化工作。遂打算边自学边写自己自学的过程,一方面作为小白的我可以和其他Python大神交流,一方面也可以以此监督自己。
【本人使用Python版本:2.7.5】
首先按理解一下爬虫(Spider),如果把一个站点比作一张纵横交错的蜘蛛网,那么我们爬虫要做的就是在这张网上爬来爬去,获得这张网上的信息和资源。而Web上每种资源,比如HTML文档、图片、视频等都由一个URI(Universal Resource Identifier,通用资源标志符)进行定位。 URL(Uniform Resource Locator,统一资源定位符)是URI的子集。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。而爬虫主要的处理对象就是URL。所以务必要对URL有一定的熟悉。
URI通常由三部分组成:
1.访问资源的命名机制;
2.存放资源的主机名;
3.资源自身 的名称,由路径表示。
URL的格式由三部分组成:
1.第一部分是协议(或称为服务方式)。
2.第二部分是存有该资源的主机IP地址(有时也包括端口号)。
3.第三部分是主机资源的具体地址,如目录和文件名等。
知乎:HTTP 协议中 URI 和 URL 有什么区别?@西毒 的回答
最近在搞挑战杯可能会有点忙,但还是希望自己能按照计划学习,定期更新此系列。
⑷ python爬虫之urllib_get
from urllib import request
import ssl
url = ' http://www..com/'
"""
url, 请求的目标url地址
data=None,默认情况为咐胡None,表示发起的是一个get请求,不为None,则发起的是一个post请求
timeout=,设置请求的超时时间
cafile=None, 设置证书
capath=None, 设置证书路径
cadefault=False, 是否要使用默认证书(默认为False)
context=None:是一个ssl值,表示忽略ssl认证
"""
content = ssl._create_unverified_context()
response = request.urlopen(url,timeout=10,content=content)
code = response.status
print(code)
b_html = response.read()
print(type(b_html),len(b_html))
res_headers = response.getheaders()
print(res_headers)
cookie_data = response.getheader('Set-Cookie')
print(cookie_data)
reason = response.reason
print(reason)
str_html = b_html.decode('utf-8')
print(type(str_html))
with open('b_.page.html','w') as file:
# file.write(b_html)
file.write(str_html)
"""
url:发起请求的url地址
data=None, 默认情况为None,表示发起的是一个get请求,不为None,则发起的是一个post请求
headers={},设置请求头(headers对应的数据类型是一个字典)
origin_req_host=None, (指定发起请求的域)
unverifiable=False,忽略SSL认证
method=None:指定发起请求的方式
"""
req_header = {
'User-Agent'衡茄拦:'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
req = request.Request(url,headers=req_header)
response = request.urlopen(req)
response.status
response.read()
response.getheaders()
response.getheader('Server')
response.reason
python2中:对于字符纳枯串和bytes类型的数据没有明显的区分
python3中:对于字符串和bytes类型的数据有明显的区分
将bytes类型的数据转换为字符串使用decode('编码类型')
将字符串转换为bytes类型的数据使用encode('编码类型')
bytearray和bytes类型的数据是有区别的:前者是可变的,后者是不可变的