Python3爬虫新手实践及代码、经验分享
Python3静态网页爬虫新手实践及代码、经验分享
写在最前
在写爬虫之前需要先配置python环境,爬取静态网页的文字及图片只需要通过pip安装Scrapy、beautifulsoup4 。(此处略去一万字,可以自行百度python3爬虫框架)
一定要注意python代码的格式化!
开始实践
一般网站都会有反爬虫机制,所以我们在这里使用最简单的方法构建header头。
header={'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0'}
还可以用代理IP防止网站因访问速度太快封IP。对于代理IP我们可以直接百度”代理IP“进行查找。
url1 = request.Request(url,headers=header)
#建立代理IP列表,此处去百度查代理IP。此处IP只是示例!!!!
iplist = ['61.135.217.7:80','115.223.223.132:9000']
proxies = {'http':random.choice(iplist)}
proxy_support = urllib.request.ProxyHandler(proxies)
#创建opener
opener = urllib.request.build_opener(proxy_support)
#安装opener,此后调用urlopen()时都会使用安装过的opener对象
urllib.request.install_opener(opener)
之后要用到BeautifulSoup。对于BeautifulSoup可以用Python标准库,这种方法速度快简单但是容错差。此处就是利用标准库
soup = BeautifulSoup(html,'html.parser')
对于爬虫的一个关键就是通过正则表达式获取到所需的内容。此处的代码作用是爬取图片,!!!!对于不同网站正则表达式会有差异!!!!在此处是认为图片的标签是img。之后用正则表达式获取到图片的源地址并存入列表,便于一个一个爬取保存下载。如有不懂正则表达式的可以在菜鸟教程中学习或留言交流交流。
links = soup.find_all('img',src=re.compile(r'.jpg$'))
之后就是简单的遍历下载了。此处有一个坑就是需要再打开图片的源地址,对于这个页面我们的header头又变成了python的初始header,这个时候服务器认出这是爬虫,如果此网站恰巧不想被爬就会关闭连接,此时程序就会抛出403异常。此时我们将每个需要访问的网址加上header就会正常了
for link in links:print(link.attrs['src'])url_real='https:'+link.attrs["src"]print(url_real)header={'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0'}url_real = request.Request(url_real,headers=header)data = urllib.request.urlopen(url_real).read()with open(path+'\%s.jpg' % time.time(), 'wb') as f:f.write(data)pass
到此为止,你的爬虫就能使用了。
说了这么多是时候上代码了:
from bs4 import BeautifulSoup
import urllib.request
from urllib import request
import re
import time
import random
import requestsprint('输入网址:',end="")
url = input('')
header={'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0'}#抛出异常
try:url1 = request.Request(url,headers=header)iplist = ['XXX.XXX.XXX.XXX:XXXX','XXX.XXX.XXX.XXX:XXXX','115.223.223.132:9000\']proxies = {'http':random.choice(iplist)}proxy_support = urllib.request.ProxyHandler(proxies)opener = urllib.request.build_opener(proxy_support)urllib.request.install_opener(opener)html = urllib.request.urlopen(url1).read()#.decode('utf-8') 若显示乱码则将加上编码soup = BeautifulSoup(html,'html.parser') links = soup.find_all('img',src=re.compile(r'.jpg$'))path = r'F:\编程语言Learning\Python\test\images' for link in links:print(link.attrs['src'])url_real='https:'+link.attrs["src"]print(url_real)header={'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0'}url_real = request.Request(url_real,headers=header)data = urllib.request.urlopen(url_real).read()with open(path+'\%s.jpg' % time.time(), 'wb') as f:f.write(data)pass
except urllib.error.URLError as e:print(e.reason)
Python3爬虫新手实践及代码、经验分享相关推荐
- 80.90后新手开网店,经验分享,神马不见得都是浮云!
80.90后新手开网店,经验分享,神马不见得都是浮云! 2011年12月02日 新手开店到底该卖什么?应该很多人都有这样的疑问.关于开店的第一个念头就是卖什么能赚钱,于是就有了新手们千篇一律关于卖什么 ...
- 关于Python爬虫接单的方法经验分享,实现经济独立
在现如今这个数据发展的时代中,我想很多人工基本工资只能说是维持自己基本的生活开销的,要是说想要自己家里人生活过得好一些的话,我想很多人是很难这样做到的.我想把我的一些接单经验分享给大家, ...
- 2023华为OD面试手撕代码经验分享
我们先来看下这个同学的面试经历吧,非常有借鉴的意义. [22届考研渣渣的od求职之旅,推荐一下两个人,德科hr和牛客的老哥] "*********",hr给了机会吧,一开始我都没想 ...
- 满成见:猎聘网数据治理实践全流程经验分享
[本文作者:满成见] [IT168 专稿]本文根据满成见老师在2018年5月11日[第九届中国数据库技术大会]现场演讲内容整理而成. 讲师简介: 满成见,猎聘网数据仓库架构师.2016年加入猎聘网,负 ...
- 主流机器学习模型模板代码+经验分享[xgb, lgb, Keras, LR]
刷比赛利器,感谢分享的人. 摘要 最近打各种比赛,在这里分享一些General Model,稍微改改就能用的 环境: python 3.5.2 XGBoost调参大全: http://blog.csd ...
- [比赛记录] 主流机器学习模型模板代码+经验分享[xgb, lgb, Keras, LR]
向AI转型的程序员都关注了这个号??? 大数据挖掘DT数据分析 公众号: datadw 最近打各种比赛,在这里分享一些General Model,稍微改改就能用的 XGBoost调参大全: http ...
- 手机qpython3使用教程爬书_5.Python3爬虫入门实践——爬取名著
1.准备工作 书写爬虫之前的步骤: 1.从哪爬 where 2.爬什么 what 3.怎么爬 how 4.爬了之后信息如何保存 save 我称之为WWHS,这就是最基本的步骤了. 1.1 从哪爬whe ...
- Python3爬虫新手项目详解:爬取豆瓣读书的前50条评论内容并显示评分。提示:有的评论不包含评分
爬取<三体>,相关网页内容如下: https://book.douban.com/subject/2567698/comments/hot?p=1 开始之前我们先明确一下爬虫的基本步骤: ...
- 代码经验分享 计算机毕业设计之Python+Vue.js机器学习求职招聘推荐系统 求职招聘数据分析
开发技术 1.前端:vue.js echarts 2.后端:flask 3.算法:协同过滤算法.基于用户.基于物品全实现 4.接口:百度AI 5.数据库:mongodb.mysql 创新点 1.爬取X ...
- AutoML前沿技术与实践经验分享 | 免费公开课
传统机器学习的解决范式可表示为: ML Solution = ML expertise + Computation + Data 新机器学习范式可表示为: New ML Solution = 100x ...
最新文章
- 导语3——node以及npm
- Java REST框架一览
- 衔接上一学期:排球积分规则
- mac下natapp使用
- file_operations结构体分析 (设备文件的操作)
- Ubuntu编写开机自启动脚本(转载)
- [建议]添加模板功能
- Python深入理解元组与列表的使用和区别
- 【汇编优化】之x86架构intrinsic优化
- 20款优秀的可以替代桌面软件的Web应用(转载自JavaEye)
- [2018.07.17 T1] 字符串最大值
- ca系统包括ca服务器,ca认证中心有哪些组成部分
- u8服务器配置维护,u8客户端连接服务器配置
- 雅加达建筑_雅加达EE:干净的板岩
- CentOS 官网下载 iso 镜像
- Go语言圣经 - 前言
- 一日一技:Python + Excel——飞速处理数据分析与处理
- 组成原理 - 内存颗粒分类(ram,rom)
- c语言万能编程模板_8051单片机C语言通用万能编程模板
- html怎样制作背题模式和答题模式,科目一背题模式还是答题模式,技巧口诀答题...