2018.5.4(python网络爬虫与信息提取入门)Requests库的五个实例

①  京东任意商品信息获取代码框架

import requests
url="https://item.jd.com/5782095.html"
try:
      r=requests.get(url)
      r.raise_for_status()     #如果状态不是200,引发HTTPError异常  
      r.encoding=r.apparent_encoding
      print(r.text[:1000])
except:
      print("爬取失败")


②  亚马逊商品爬取  url连接比京东更为复杂 只取代表商品的url信息

https://www.amazon.cn/gp/product/B07BS9BD1H


'
>>> r.request.headers   #查看发送信息的requests的头部信息的内容
{'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
#爬虫告知服务器,该次请求是由爬虫发起的

更改头部信息 模拟浏览器发送请求

>>> kv={'user-agent':'Mozilla/5.0'}
>>> url='https://www.amazon.cn/gp/product/B07BS9BD1H'
>>> r=requests.get(url,headers=kv)
>>> r.status_code
200
>>> r.request.headers
{'user-agent': 'Mozilla/5.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

代码框架:

import requests
url="https://www.amazon.cn/gp/product/B07BS9BD1H"
try:
      kv={'user-agent':'Mozilla/5.0'}#模拟浏览器 提供请求
      r=requests.get(url,headers=kv)
      r.raise_for_status()     #如果状态不是200,引发HTTPError异常  
      r.encoding=r.apparent_encoding
      print(r.text[1000:2000])
except: print("爬取失败")

③ 搜索引擎关键词提交

搜索引擎关键词提交接口:

百度的关键词接口:http://www.baidu.com/s?wd=keyword

360的关键词接口: http://www.so.com/s?q=keyword

>>> import requests
>>> kv={'wd':'python'}
>>> r=requests.get("http://www.baidu.com/s",params=kv)
>>> r.status_code
200
>>> r.request.url
'http://www.baidu.com/s?wd=python'  #查看发给百度的url链接是什么

百度搜索引擎关键词提交代码框架

import requests
keyword="python"
try:
      kv={'wd':keyword}
      r=requests.get("https://www.baidu.com/",params=kv)
      print(r.request.url)
      r.raise_for_status()
      print(len(r.text))   #仅获取得到的字节数
except:
      print("爬取失败")
      
https://www.baidu.com/?wd=python
2443

同理 360搜索引擎关键词提交代码框架:

import requests
keyword="python"
try:
      kv={'q':keyword}
      r=requests.get("http://www.so.com",params=kv)
      print(r.request.url)
      r.raise_for_status()
      print(len(r.text))
except:
      print("爬取失败")

④ 网络图片的爬取与存储

>>> import requests
>>> path="D:/abc.jpg"  #图片的保存地址
>>> url="http://image.ngchina.com.cn/2018/0502/20180502044945364.jpg"
>>> r=requests.get(url)
>>> r.status_code
200
>>> with open(path,'wb')as f:
	f.write(r.content)
913906
>>> f.close() #关闭文件

其中     path="D:/abc.jpg" 

           with open(path,'wb')as f:

打开了一个文件,即存储图片的abc.jpg 并且定义为文件标识符F 

将返回的内容写到这个文件中r.content表示返回内容的二进制形式     

Response中  r.content(HTTP响应内容的二进制形式 )


代码框架

# 网络图片链接的格式:http://www.example.com/picture.jpg

# 例:http://image.ngchina.com.cn/2018/0502/20180502044945364.jpg

# 将图片原本的名字保存下来 只需将url中最后的图片名字截取下来

import requests
import os
url="http://image.ngchina.com.cn/2018/0502/20180502044945364.jpg"
root="D://pics//"                 #定义一个根目录
path=root+url.split('/')[-1]

#将文件的路径表示为根目录+url链接的以反斜杠分隔的最后一部分

try:
      if not os.path.exists(root):     #判断根目录是否存在 如果不存在 则建立这样一个根目录
            os.mkdir(root)
      if not os.path.exists(path):     #判断文件是否存在,当文件不存在则通过requests.get获取
            r=requests.get(url)
            with open(path,'wb')as f:
                  f.write(r.content)
                  f.close()
                  print("保存成功")
      else:
                  print("文件已存在")
except:
      print("爬取失败")

⑤ IP归属地的自动查询

www.ip138.com

通过上述网站提交IP地址的url链接  ↓↓↓

http://www.ip138.com/ips138.asp?ip=ipaddress   (211.80.243.138&action=2)

代码框架

import requests
url="http://m.ip138.com/ip.asp?ip="
try:
      r=requests.get(url+'202.204.80.112')
      r.raise_for_status()
      r.encoding=r.apparent_encoding
      print(r.text[-500:])
except:
      print("爬取失败")





猜你喜欢

转载自blog.csdn.net/weixin_41815104/article/details/80191757