编码问题
方法1. response设置编码方式
response.encoding = ‘gbk’
此时text输出为中文
print(response.text)
方法2. content内容进行解码
print(response.content.decode(‘gbk’))
上节说过当你的爬虫不能被服务器识别为真正的浏览器访问时,服务器则不会给你返回正确的信息,这个时候就必须对爬虫代码进行伪装。
HTTP部分请求头部(HEADER)包含:
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Host:
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.
设置headers
headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’,
‘Referer’: ‘
‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8’,
‘Accept-Encoding’: ‘gzip, deflate, br’,
‘Accept-Language’: ‘zh-CN,zh;q=0.9’
}
response = requests.get(url = url, headers = headers)
login_url = ‘
设置登录名与密码
form_data = {‘username’:‘’, ‘password’:'’}
headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36’,
‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8’,
‘Accept-Encoding’: ‘gzip, deflate, br’,
‘Accept-Language’: ‘zh-CN,zh;q=0.9’
}
response = requests.post(login_url, data=form_data, headers=headers)
先了解下HTML的基本结构:
<name attribute = “xxxx” …> content 依次是标签名 属性 属性值 若干个属性 内容-内容可以是单纯内容,也可以是子标签
BeautifulSoup将 HTML 文档转换成一个树形结构,每个节点都是 Python 对象,所有对象可以归纳为4种:
BeautifulSoup
代表整个HTML文档的对象,大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型,名称,以及属性。
Tag 就是标签
直接使用BeautifulSoup的对象bs.xxx就可以访问到第一个名字为xxx的标签对象
就是html文档中从到一个标签的完整的内容。然后可以.name 获得标签名字,用.string获得标签的内容,注意如果标签里面包含子标签,那么.string似乎不起作用,可以用.contents获取子标签列表,注意是列表形式,主要是这几个属性,还有很多其他的属性。
NavigableString
就是前面Tag下的string
Comment
String?
查找节点的主要方法,任意层级下的都可以查找。bs.find_all(“xxx”) 根据名字搜索,搜索名字为xxx的标签,不仅可以传入字符串,还可以传入正则式re.complie(“xxx”),列表,还有过滤器方法
还可以传入kwargs参数,指定属性进行匹配,比如:
tag[‘xxx’] 即可
使用时要注意的,有可能页面比较复杂,标签层级关系没看清楚,导致找不到东西,要注意
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h60095.shtml