lxml and 代理ip
pip install lxml
导包
From lxml import etree
1. 注意这个是本地html就直接使用etree.parse即可
2. html_etree=etree.parse("test.html") print(html_etree)
3. Html_etree.xpath("//li")//就是直接打印出来li所有的属性
4. 获取所有li下面的的class的值 html_etree.xpath(//li/@class)
5. 获取li下的所有的span的标签 html_etree.xpath("//li//span") /是用来获取子元素的 而span和li不是子元素
6. 获取li下面的所有的a标签里面的所有的class html_etree.xpath("//li/a//@class")
7. html.xpath('//li[last()]/a/@href') # 谓语 [last()] 可以找到最后一个元素 获取最后一个li的a的href属性对应的值
8. 获取倒数第二个就是[last()-1/a] 获取倒数第二个li元素的内容
在本地没有文件的情况下使用response读取到的数据直接打开就可以了
#html_etree=etree.HTML(html)
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。
1) 一般使用html_etree.xpath("//div[@class=' ']/a//text()")
2) 使用text()就可以文字的形式的方式打印出数据 不在是打印出来的数据
Cookiejar
1. 首先需要导入import http.cookiejar
然后来进行生成这个方法 (这样就可以不用在headers里面写入cookie的值了)
#创建cookie对象可以帮助我们保存服务器向浏览器cookie中写入的内容
cookie=http.cookiejar.CookieJar()
#使用cookie对象来创建handler对象
handler=request.HTTPCookieProcessor(cookie)
#使用handler对象创建opner对象
opener=request.build_opener(handler)
最后可以直接使用open打开就行了:
req1=request.Request(url=login_url,headers=headers)
response1=opener.open(req1)
print(response1.read().decode("utf-8"))
代理ip
#构建免费代理
#proxy={
#"http":"49.86.183.163:9999",
#"https":"49.86.183.163:9999"
#}
(这里我们使用的免费ip,(快代理),公司一般都会有代理池的!)
proxy={
"http":"http://18632229371:qq6218346@119.96.174.58:28803",
"https":"http://18632229371:qq6218346@119.96.174.58:28803"
}
1. handler=request.ProxyHandler(proxies=proxy) request的proxyhandler方法
opener=request.build_opener(handler) 生成这个方法