Python基础之urllib

访问
#引用库
import urllib.request

url = 'https://www.baidu.com'
x = urllib.request.urlopen(url) 
print(x.read())
post
#引用库
import urllib.request
import urllib.parse
#网址和要传递的参数
url = 'https://www.pythonprogramming.com'
values = {'s':'basic',
        'submit':'search'}
#在post中要encode参数
data = urllib.parse.urlencode(values)
data = data.encode('utf-8')
#发送和接受数据
req = urllib.request.Request(url,data)
resq = urllib.request.urlopen(req)
resqData = resq.read()
print(respData)

一般网站不希望机器(网络上的爬虫)去窃取网站内容,他们只希望真正的用户去使用。所以针做了一些限制。
让我们用一般方法向Google传递参数,执行搜索,接收搜索的内容。这里,Google让我们吃了一个闭门羹:你是程序,不是人,我禁止你读取内容。

import urllib.request
try:
  x = urllib.request.urlopen('https://www.google.com/search?q=test')
  print(x.read())
except Exception as e:
  print(str(e))

因此,我们要在传递参数的同时,加上表头,伪造成浏览器用户。

try:
  url ='https://www.google.com/search?q=test'
  headers = {}
  headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'
#发送和接受数据
  req = urllib.request.Request(url,headers=headers)
  resq = urllib.request.urlopen(req)
  resqData = resq.read()
#因为数据很多,所以我们写人文件中,防止宕机
  saveFile = open('withHeaders.txt','w')
  saveFile.write(str(resqData))
  saveFile.close()
except Exception as e:
  print(str(e))
获取想要的内容
#引用库
import urllib.request
import urllib.parse
import re
#网址和要传递的参数
url = 'https://www.pythonprogramming.com'
values = {'s':'basic',
        'submit':'search'}
#在post中要encode参数
data = urllib.parse.urlencode(values)
data = data.encode('utf-8')
#发送和接受数据
req = urllib.request.Request(url,data)
resq = urllib.request.urlopen(req)
resqData = resq.read()
#利用正则筛选想要的结果,这里我们想要获取<p>标签之间的内容
paragraphs = re.findall(r'<p>(.*?)</p>')
for eachP in paragraphs:
    print(eachP)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值