网页爬取的三种方式

本文通过淘宝网图片爬取实例,详细介绍了利用Python进行网页爬取的三种方式:urllib.request、封装Request请求以及urlretrieve直接保存到硬盘。重点探讨了如何分析网页结构并实施爬取。
部署运行你感兴趣的模型镜像

 爬取的重点在于分析网页结构,以爬取淘宝网图片为例:
爬取网页有三种方式:
1.urllib.request
2.封装Request请求
3.urlretrieve直接写入硬盘
下面以第三种方法爬取xxx图片
代码如下:

#爬取网页有三种方式:urllib.request,封装Request请求,urlretrieve直接写入硬盘,下面以第三种方法爬取xxx图片
import urllib.request
'''爬取网页方法一:'''
data=urllib.request.urlopen('http://123.sogou.com').read().decode('utf-8','ignore')
#A=len(data)
'''爬取网页方法二:'''
url='http://123.sogou.com'
req=urllib.request.Request(url)
data2=urllib.request.urlopen(req).read().decode('utf-8','ignore')
#B=len(data2)
#爬取淘宝网'xxx'
import urllib.request
import re
key1="关键词"
key2=urllib.request.quote(key1) #对关键字进行编码处理
for i in range(1,10):   #获取各页
    try:        #底层网页爬取异常处理
        print("--------正在爬第"+str(i)+"页------------")
        url="https://s.taobao.com/search?q="+key2+"&s="+str((i-1)*44)    #构造网页结构
        data=urllib.request.urlopen(url).read().decode("utf-8","ignore") #ignore忽视编码错误
        pat='"pic_url":"//(.*?)"'   #正则构建图片网址
        imglist=re.compile(pat).findall(data)  #匹配每一个页面的图片网址
        for j in range(0,len(imglist)):  #循环每一个页面,并保存图片到本地硬盘
            try:
                thisimg=imglist[j]
                thisimgurl="http://"+thisimg
                localfile="D:/爬虫工程师/淘宝粽子图片/"+str(i)+"_"+str(j)+".jpg"
                urllib.request.urlretrieve(thisimgurl,filename=localfile)  
                #urlretrieve方法直接将图片网页写入本地硬盘
            except Exception as err:
                pass
    except Exception as err:
        pass

 

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python中,我们可以使用一些常见的库如`requests`来发送HTTP请求获取网页内容,然后利用`BeautifulSoup`或`Scrapy`等解析工具来提取我们需要的信息。以下是基本步骤: 1. **安装必要的库**: 首先,确保已经安装了`requests`, `beautifulsoup4`(或`lxml`作为其替代品),以及可能需要的其他库,比如`scrapy`(如果用于更复杂的爬虫任务)。 ```bash pip install requests beautifulsoup4 ``` 2. **基础爬取前三页**: 假设我们要爬取一个网站的前三个页面,可以编写一个循环结构,每次请求并解析下一页直到达到三页。以下是一个简单的示例: ```python import requests from bs4 import BeautifulSoup def get_pages(url, page_limit=3): for i in range(1, page_limit + 1): # 构建完整的URL full_url = f"{url}?page={i}" # 发送GET请求 response = requests.get(full_url) if response.status_code == 200: # 检查请求是否成功 soup = BeautifulSoup(response.text, 'html.parser') # 提取你需要的数据,这里仅打印网页标题为例 title = soup.find('title').text print(f"Page {i}: Title - {title}") else: print(f"Failed to fetch page {i}, status code: {response.status_code}") # 替换 'https://example.com' 为你想要爬取的网站地址 get_pages('https://example.com') ``` 3. **注意事项**: - 网站的API设计可能会限制爬取频率,确保遵守Robots.txt协议,并尊重网站的爬虫政策。 - 如果有分页导航,通常会在URL中添加查询参数`page`或类似的部分,上面的例子假设了这种方式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值