中国大学MOOC —— 学习笔记(一)

注:本文仅是个人的学习笔记,内容来源于中国大学mooc《Python网络爬虫与信息提取》课程

一 京东商品页面爬取 

import requests

url = "https://item.jd.com/16392426155.html"
try:
     r = requests.get(url)
     r.raise_for_status()#检查访问信息的状态码,200表示正确
     r.encoding = r.apparent_encoding#将编码改为可以显示的编码
     print(r.text[:1000])
except:
     print("爬取失败")

二 亚马逊商品页面的爬取

1 用一个字典kv保存需要修改的头部信息。

2 获取头部信息:

>>> r.request.headers
{'User-Agent': 'python-requests/2.18.4', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

3 访问url时,修改头部信息

import requests

url = "https://www.amazon.cn/dp/B074JV6Y48/ref=gwgfloorv1_BMVD_a_0?pf_rd_p=0e393420-91cc-445c-be7c-6f0361fc9c40&pf_rd_s=desktop-8&pf_rd_t=36701&pf_rd_i=desktop&pf_rd_m=A1AJ19PSB66TGU&pf_rd_r=M20Y5N4VVMJD20QCQZNY&pf_rd_r=M20Y5N4VVMJD20QCQZNY&pf_rd_p=0e393420-91cc-445c-be7c-6f0361fc9c40"
try:
     kv = {'user-agent':'Mozilla/5.0'}  #请求头
     r = requests.get(url,headers = kv) #将请求头修改为kv
     r.raise_for_status()
     r.encoding = r.apparent_encoding
     print(r.text[:2000])
except:
     print("爬取失败")

三 百度/360搜索关键词提交

字典kv用于保存需要查找到keywords

import requests

try:
     kv = {'wd':'Python'}
     r = requests.get('http://www.baidu.com/s',params = kv)
     print(r.request.url)
     r.raise_for_status()
     print(len(r.text))

except:
     print("爬虫失败")

四 网络图片的爬取和存储

网络图片链接格式:

http://www.example.com/picture.jpg

选择国家地理的一张图片url作为对象。

import requests

path = "D://abc.jpg"#保存的路径
url = "http://img0.dili360.com/rw9/ga/M01/48/3C/wKgBy1kj49qAMVd7ADKmuZ9jug8377.tub.jpg"
r = requests.get(url)
with open(path,'wb') as f:
     f.write(r.content)#response对象的content属性:以二进制的方式写入文件
f.close()

代码优化:

引入os库

import requests
import os

url = "http://img0.dili360.com/rw9/ga/M01/48/3C/wKgBy1kj49qAMVd7ADKmuZ9jug8377.tub.jpg"
root = "D://pic//"
path = root + url.split('/')[-1]#分割url并以列表形式保存,取列表最后一位

try:
     if not os.path.exists(root):#不存在父目录就创建
          os.mkdir(root)
     if not os.path.exists(path):#不存在就爬取文件并保存
          r = requests.get(url)
          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)
     r.raise_for_status
     r.encoding = r.apparent_encoding
     print(r.text[-5000:])#抓取ip地址对应网页的后5000个字符
except:
     print("爬虫失败")
原文地址:https://www.cnblogs.com/BeautifulSoup/p/8452276.html