假期学习【六】Python网络爬虫2020.2.4
今天通过Python网络爬虫视频复习了一下以前初学的网络爬虫,了解了网络爬虫的相关规范。
案例:京东的Robots协议
https://www.jd.com/robots.txt
说明可以爬虫的范围
#注释. *代表所有 /代表根目录
robots协议
http://www.baidu.com/robots.txt 百度
http://news.sina.com.cn/robots.txt 新浪新闻
http://www.qq.com/robots.txt 腾讯
http://news.qq.com/robots.txt 腾讯新闻
如果一个网站不设置robots协议说明所有内容都可以爬取
网络爬虫:自动或人工识别robots.txt,再进行内容爬取
约束性:robots协议建议但非约束性,不遵守可能存在法律风险
爬取网页的通用代码框架
#爬取网页的通用代码框架
import requests
def getHTMLText(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
return "产生异常" if __name__=="__main__":
url="http://www.baidu.com"
print(getHTMLText(url))
京东商品页面的爬取,这段代码可以简单爬取京东一个商品页面未经过处理的信息。
#京东商品页面爬取
import requests
r=requests.get('https://item.jd.com/100000287117.html')
try:
print(r.status_code)
print(r.encoding)
print(r.text[:1000])
except:
print("爬取失败!")
亚马逊商品页面的爬取,与京东类似,但增加了对headers的限制。
#亚马逊商品页面爬取
import requests
url='https://www.amazon.cn/dp/B01LX4GONW/ref=Oct_DLandingS_rdp_4e4570f3'
try:
kv = {'user-agent': 'Mozilla/5.0'}
r = requests.get(url, headers=kv)
print(r.request.headers) #查看当前访问的headers
print(r.status_code) #查看是否错误
print(r.encoding) #查看可能编码
r.encoding=r.apparent_encoding #将编码转换为所提取内容分析过的编码
print(r.text) #提取字符
except:
print("爬取失败")
百度360搜索关键词,需要安全验证。
import requests
kv={'wd':'Python'}
try:
r=requests.get("http://www.baidu.com/s",params=kv)
print(r.status_code) #查看是出错
print(r.encoding)
r.encoding=r.apparent_encoding
print(r.request.url) #查看完整ur
print(len(r.text)) #查看查询结果条目数
print(r.text)
except:
print("爬取错误!")
爬取图片:
import requests
import os
url="http://image.ngchina.com.cn/2020/0203/20200203014405762.jpg"
root="D://pics//"
path=root+url.split('/')[-1]
try:
if not os.path.exists(root):
os.mkdir(root)
if not os.path.exists(path):
r = requests.get(url)
print(r.status_code) # 检测错误
with open(path,'wb') as f:
f.write(r.content)
f.close()
print("图片保存成功")
else:
print("图片已存在!")
except:
print("爬取出错!")
ip地址归属地的自助查询
import requests
url="http://m.ip138.com/ip.asp?ip="
try:
r = requests.get(url + '202.204.80.112')
print(r.status_code)
print(r.text[-500:])
except:
print("爬取失败!")
BeautifulSoup类的基本元素
Tag 标签,最基本的信息组织单元,分别是<>和</>标明开头和结尾
Name 标签的名字,<p>...</p>的名字是‘p’格式<tag>.name
Attributes 标签的属性,字典形式组织,格式<tag>.attrs
NavigableString 标签内非属性字符串,<>,...</>中字符串 格式<tag>.string
Comment 标签内字符串的注释部分,一种特殊的Comment类型
import requests
from bs4 import BeautifulSoup
r=requests.get("http://python123.io/ws/demo.html")
#print(r.text)
demo=r.text
soup=BeautifulSoup(demo,"html.parser") #解析为Beautifulsoup可以理解的汤
print(soup.title) #打印title
#print(soup.prettify()) #标签的内容
tag=soup.a #返回第一个标签内容
print(tag)
print(type(tag)) #标签的名字
print(soup.a.name)#a标签的名字
print(soup.a.parent.name)#a标签父亲的名字
print(soup.a.parent.parent.name) #a标签的父亲的父亲的名字
print(type(soup.a.name)) #标签的属性
print(tag.attrs) #a标签的属性
print(tag.attrs['class'])#a标签class属性
print(tag.attrs['href'])#a标签href属性的值
print(type(tag.attrs)) #标签内部内容
print(soup.a.string)
print(soup.p.string)
print(type(soup.p.string))
import requests
path="D:/abc.jpg"
url="http://image.ngchina.com.cn/2020/0203/20200203014405762.jpg"
try:
r=requests.get(url)
print(r.status_code)#检测错误
with open(path,'wb') as f:
f.write(r.content)
except:
print("爬取出错!")
------------恢复内容结束------------
假期学习【六】Python网络爬虫2020.2.4的更多相关文章
- 学习分享--python网络爬虫(一)关于如何更新python pip以及如何安装python requests库
一.python pip的更新(我的是window10 界面可能不太一样) 1.找到电脑左下角开始按钮,并点击: 2.输入cmd 3.打开以后,先查看自己的pip版本 输入:pip -V 敲回 ...
- 一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取
前几天小编给大家分享了数据可视化分析,在文尾提及了网易云音乐歌词爬取,今天小编给大家分享网易云音乐歌词爬取方法. 本文的总体思路如下: 找到正确的URL,获取源码: 利用bs4解析源码,获取歌曲名和歌 ...
- 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接
[一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...
- 手把手教你用Python网络爬虫获取网易云音乐歌曲
前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...
- 利用Python网络爬虫采集天气网的实时信息—BeautifulSoup选择器
相信小伙伴们都知道今冬以来范围最广.持续时间最长.影响最重的一场低温雨雪冰冻天气过程正在进行中.预计,今天安徽.江苏.浙江.湖北.湖南等地有暴雪,局地大暴雪,新增积雪深度4-8厘米,局地可达10-20 ...
- python网络爬虫学习笔记
python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...
- 第3次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 4.提供图片或网站显示的学习进 ...
- 第三次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 第一周 Requests库的爬 ...
- Python网络爬虫学习总结
1.检查robots.txt 让爬虫了解爬取该网站时存在哪些限制. 最小化爬虫被封禁的可能,而且还能发现和网站结构相关的线索. 2.检查网站地图(robots.txt文件中发现的Sitemap文件) ...
随机推荐
- css权重导致的样式不生效问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 不会用数据可视化大屏?一招教你轻松使用数据可视化BI软件创建农业公司运营数据分析大屏
灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件. 本文以农业公司运营数据分析大屏 ...
- MyEclipse10下载安装破解及汉化内含jdk8u241及其帮助文档
下载MyEclipse10以及破解包 MyEclipse10: 提取码:020c 破解包 提取码:mycj 注:破解包内含有破解教程,很详细,这里就不多说了 MyEclipse10汉化 操作系统:wi ...
- Android中通过Fragment进行简单的页面切换
首先是activity中的布局 <?xml version="1.0" encoding="utf-8"?> <androidx.constr ...
- docker笔记(2)
docker笔记(2) 常用命令和操作 1. 镜像操作 操作 命令 说明 检索 docker search 关键字 eg:docker search redis 我们经常去docker hub上检索镜 ...
- oracle快速创建用户、imp/exp导入导出dmp文件
1.首先我们可以用管理员用户以sysdba的身份登录oracle sqlplus username/password as sysdba 2.然后我就可以来创建用户了. create user use ...
- Centos中Redis的下载编译与安装(超详细)
场景 NoSQL,泛指非关系型的数据库,NoSQL即Not-Only SQL,它可以作为关系型数据库的良好补充.随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数 ...
- 如何把已有的本地git仓库,推送到远程新的仓库(github private)并进行远程开发;
最近因为疫情,在家干活,连接不上之前的gitlab 服务器:所以不得把现有的代码迁移到github 的私有仓库来进行开发:下面简要记录迁移的过程: 首先,确保你已经配置好本地访问远程私有仓库的所有权限 ...
- 记录一个解决IOS极光推送解决问题方法的网址csdn
https://blog.csdn.net/Three_Zhang/article/details/54667258
- Android View的事件分发机制探索
概述 Android事件传递机制也是Android系统中比较重要的一块,事件类型有很多种,这里主要讨论TouchEvent的事件在framework层的传递处理机制.因为对于App开发人员来说,理解f ...