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爬虫新手实践及代码、经验分享相关推荐

  1. 80.90后新手开网店,经验分享,神马不见得都是浮云!

    80.90后新手开网店,经验分享,神马不见得都是浮云! 2011年12月02日 新手开店到底该卖什么?应该很多人都有这样的疑问.关于开店的第一个念头就是卖什么能赚钱,于是就有了新手们千篇一律关于卖什么 ...

  2. 关于Python爬虫接单的方法经验分享,实现经济独立

           在现如今这个数据发展的时代中,我想很多人工基本工资只能说是维持自己基本的生活开销的,要是说想要自己家里人生活过得好一些的话,我想很多人是很难这样做到的.我想把我的一些接单经验分享给大家, ...

  3. 2023华为OD面试手撕代码经验分享

    我们先来看下这个同学的面试经历吧,非常有借鉴的意义. [22届考研渣渣的od求职之旅,推荐一下两个人,德科hr和牛客的老哥] "*********",hr给了机会吧,一开始我都没想 ...

  4. 满成见:猎聘网数据治理实践全流程经验分享

    [本文作者:满成见] [IT168 专稿]本文根据满成见老师在2018年5月11日[第九届中国数据库技术大会]现场演讲内容整理而成. 讲师简介: 满成见,猎聘网数据仓库架构师.2016年加入猎聘网,负 ...

  5. 主流机器学习模型模板代码+经验分享[xgb, lgb, Keras, LR]

    刷比赛利器,感谢分享的人. 摘要 最近打各种比赛,在这里分享一些General Model,稍微改改就能用的 环境: python 3.5.2 XGBoost调参大全: http://blog.csd ...

  6. [比赛记录] 主流机器学习模型模板代码+经验分享[xgb, lgb, Keras, LR]

    向AI转型的程序员都关注了这个号??? 大数据挖掘DT数据分析  公众号: datadw 最近打各种比赛,在这里分享一些General Model,稍微改改就能用的 XGBoost调参大全: http ...

  7. 手机qpython3使用教程爬书_5.Python3爬虫入门实践——爬取名著

    1.准备工作 书写爬虫之前的步骤: 1.从哪爬 where 2.爬什么 what 3.怎么爬 how 4.爬了之后信息如何保存 save 我称之为WWHS,这就是最基本的步骤了. 1.1 从哪爬whe ...

  8. Python3爬虫新手项目详解:爬取豆瓣读书的前50条评论内容并显示评分。提示:有的评论不包含评分

    爬取<三体>,相关网页内容如下: https://book.douban.com/subject/2567698/comments/hot?p=1 开始之前我们先明确一下爬虫的基本步骤: ...

  9. 代码经验分享 计算机毕业设计之Python+Vue.js机器学习求职招聘推荐系统 求职招聘数据分析

    开发技术 1.前端:vue.js echarts 2.后端:flask 3.算法:协同过滤算法.基于用户.基于物品全实现 4.接口:百度AI 5.数据库:mongodb.mysql 创新点 1.爬取X ...

  10. AutoML前沿技术与实践经验分享 | 免费公开课

    传统机器学习的解决范式可表示为: ML Solution = ML expertise + Computation + Data 新机器学习范式可表示为: New ML Solution = 100x ...

最新文章

  1. 导语3——node以及npm
  2. Java REST框架一览
  3. 衔接上一学期:排球积分规则
  4. mac下natapp使用
  5. file_operations结构体分析 (设备文件的操作)
  6. Ubuntu编写开机自启动脚本(转载)
  7. [建议]添加模板功能
  8. Python深入理解元组与列表的使用和区别
  9. 【汇编优化】之x86架构intrinsic优化
  10. 20款优秀的可以替代桌面软件的Web应用(转载自JavaEye)
  11. [2018.07.17 T1] 字符串最大值
  12. ca系统包括ca服务器,ca认证中心有哪些组成部分
  13. u8服务器配置维护,u8客户端连接服务器配置
  14. 雅加达建筑_雅加达EE:干净的板岩
  15. CentOS 官网下载 iso 镜像
  16. Go语言圣经 - 前言
  17. 一日一技:Python + Excel——飞速处理数据分析与处理
  18. 组成原理 - 内存颗粒分类(ram,rom)
  19. c语言万能编程模板_8051单片机C语言通用万能编程模板
  20. html怎样制作背题模式和答题模式,科目一背题模式还是答题模式,技巧口诀答题...

热门文章

  1. altair edem2021仿真模拟软件
  2. 【APP源码】呆萌助手工具箱android源码
  3. springboot整合银联支付B2C
  4. 关于Kindle的生词提示功能不显示
  5. 医院标准化信息中心机房建设心得
  6. 小熊派BearPi-IoT(GD)之IoT Studio开发环境搭建
  7. Mp4box的下载、安装和使用
  8. 计算机显示不出来验证码,如何解决网页图片红叉显示不出来验证码图片没显示的电脑故障...
  9. Linux命令:md5sum
  10. PX4从放弃到精通(一):开源飞控PX4简介+系列文章大纲