python3 实现爬虫 urllib篇 + 数据处理(采用bs4) (二)

这次介绍urllib库和BeautifulSoup的一些细节用法
如果有些函数不明白什么作用,请参考第一篇文章
urllib为python3自带库,bs4需要cmd下 pip install bs4.如果没有成功基本是你环境变量设置或者pip的问题
https://blog.****.net/qq_36376711/article/details/86614578

request访问方法一:

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
url可以是字符串或request对象,一般是HTTP地址
data一般不用管,目前只有HTTP/HTTPS用到data
timeout指定连接超时时间,只对url是http,https,ftp链接时生效
cafile和capath
可选的cafile和capath参数为HTTPS请求指定一组可信CA证书。
cadefault不用管
context是描述各种SSL选项的ssl.SSLContext实例

from urllib import request
from bs4 import BeautifulSoup

url = "https://docs.python.org/3.7/library/urllib.html"
#urlopen是request库中最简单的访问方法
content = request.urlopen(url)
#显示你访问的url地址
print(content.geturl())
#以email.message_from_string()实例的形式返回页面的元信息,例如标题
#参考:https://docs.python.org/3.7/library/email.parser.html#email.message_from_string
print(content.info())
#html访问成功则返回200
print(content.getcode())

html = content.read().decode("utf-8")

HTTP或HTTPS访问成功会返回一个http.client.HTTPResponse 对象
失败返回exception http.client.HTTPException的一种子类

urllib.request.urlopen() 对应旧版本中的 urllib2.urlopen

request访问方法二:

class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
这是url request的抽象类

url2 = "https://www.****.net/"
#构造头数据,伪装成正常浏览器访问
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0'}
content2 = request.Request(url=url2, headers=headers)
html2 = content2.read().decode("utf-8") 

浏览器中按F12或者右键,审查元素,找到network,进行一些操作,以访问谷歌翻译时输入一些需要翻译的文字为例,输入后,发现产生数据交换,随便点击其中一项,找到Request Headers。实际用到哪些headers参数需要你自己去查看你想爬去的网站,具体情况具体分析。有些不必要的参数也可以不用填进去,这个需要耐心的尝试。
python3 实现爬虫 urllib篇 + 数据处理(采用bs4) (二)