赞
踩
大家好,给大家分享一下利用python爬取简单网页数据步骤,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!
爬虫是Python语言最基本的用法之一,爬虫的前提就是数据请求,数据请求方法就urlopen和requests这两种比较常用,而两种方法大同小异,具体我们通过代码来看看
urlopen方法
urlopen分为两种情况:
一:请求网址中没有中文
from urllib.request import Request,urlopen
def url_urlopen(self):
url='https://blog.csdn.net/'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
request=Request(url,headers=headers)
response=urlopen(request)
code=response.read().decode()
print(code)
二:请求网址中有中文,需要对网址进行解析
from urllib.request import Request,urlopen
from urllib.parse import quote
import string
def url_urlopen(self):
url='https://www.sojson.com/open/api/weather/xml.shtml?city=郑州'
response=urlopen(quote(url,safe=string.printable))
code=response.read().decode()
print(code)
requests方法
request方法没有对网址的要求,相对于urlopen比较简单
import requests
def url_requests(cls):
url='https://blog.csdn.net/'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
code=requests.get(url,headers=headers).content.decode()
print(code)
请求方法进阶
上面这两种方法不支持修改ip,获取cookie,验证代理等内容
如果要使用这些内容,需要使用build_opener来进行处理
(1)修改IP
1.导入相关第三方库
import random
from urllib.request import Request,urlopen,ProxyHandler,bulid_opener
2.准备一些IP(注意域名),并设置headers
ip_list=[
'255.255.255.99:99',
'255.255.254.99:99',
'255.255.253.99:99',
'255.255.252.99:99',
]
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
3.请求网址并随机一个ip
如果域名是http,则key值为http
如果域名是https,则key值为https
proxy={ 'http':random.choice(ip_list)}
request=Request('http://www.baidu.com',headers=headers)
4.利用build_operner来使用替换ip(重点)
proxy_handler=ProxyHandler(proxy)
opener=build_opener(proxy_handler)
response=opener.open(request)
code=response.read().decode()
print(code)
(2)获取cookie
1.导入相关第三方库
from http.cookiejar import CookieJar
from urllib.request import Request,urlopen,HTTPCookieProcessor,build_opener
2.创建一个管理cookie的对象并使用获取到的cookie进行访问
cookie_obj=CookieJar()
cookie_handler=HTTPCookieProcessor(cookie_obj)
opener=build_opener(cookie_handler)
response=opener.open('http://www.neihanshequ.com')
code=response.read().decode()
print(code)
关于数据请求就说到这里吧,学会后爬取静态数据基本上没什么问题了,爬取动态数据之后再说
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。