mysql没有配置环境变量会怎样python解析HTML⽹页代码,获取所有超链接
背景:领导让统计点东西,之前⼀个页⾯的都⽤JS操作的,这次不⾏了:要跳2个页⾯才能获取到数据(我的思路是先从第⼀个页⾯获取所有超链接放到⼀个数组⾥,然后循环遍历,取第⼆个页⾯⾥的数据)。然后决定⽤刚学的PYTHON上⼿。(其实我这个整体思路就错了,应该直接通过接⼝取数据;⽽不是通过页⾯URL;因为URL有可能是动态⽣成的数据,就算获取到了url解析出来了,数据也是不全的...但也算加深学习python 了)
思路:⾸先就是把请求头(包括cookie)放在header⾥登录⽹页。第⼆步是获取A标签。
from bs4
import BeautifulSoup
from urllib import request
quest
import chardet
import zlib
import requests
#1 数据url
url ="/xxxxx"
#2 添加请求头
header = {
"method":"POST",
"accept":"application/json, text/plain, */*",
inmetro怎么读"accept-encoding":"gzip, deflate, br",
"accept-language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
"content-type":"application/json;charset=UTF-8",
"cookie":"xxxxxxxxxxxxxxxxxxx",
}
#3 构建请求对象
request = quest.Request(url, headers=header)python请求并解析json数据
#4 发送请求对象
response = quest.urlopen(request)
#5 读取并解析GZIP格式的页⾯(这⾥踩过坑,⼀开始解析出是都是乱码;后来知道是因为gzip格式导致的;处理⽅式如下)
创建一个简单的链表c语言data = zlib.ad(), 16+zlib.MAX_WBITS)
#打印data
print(data)
#调试打印解析出的⽂件的格式是什么
print (chardet.detect(data).get('encoding'))
soup = BeautifulSoup(data, 'html.parser', from_encoding='iso-8859-1')
print(soup.decode('UTF-8'))
# 出所有的 a 标签, 因为所有的链接都在 a 标签内
data = soup.find_all('a')
# 打开⽂件对象做持久化操作
file =open('D:/', mode='w', encoding='UTF-8')
# 遍历所有的 a 标签, 获取它们的 href 属性的值和它们的text
for itemin data:
if item.stringis not None and item['href'] !='javascript:;' and item['href'] !='#':
print(item.string, ('href'))
redis面试题及答案2022file.write(str.__add__(item.string, ' '))
file.write(str.__add__(item['href'], '\n'))
mysql数据库端口号怎么查踩了3个坑:
1.⼀个是read源⽹页后,发现都是乱码;然后发现是gzip格式导致的;然后导⼊python的zlib库解决的。
然后还百度了--->打印解析出的⽂件的格式的指令:#print (chardet.detect(html).get('encoding'))
2.最开始写得那版,其实没有read,其实也是运⾏成功了的;但是我看着返回结果不太对,就⼜去read了⼀下源⽂件。然后出现了上述乱码问题。
第⼀版代码:
第⼆版代码:
3.成功解析出源码后,发现⽐源HTML少了好多数据。⼀查,发现有些数据是js后期加载⽣成的.....也就
是说我这些都⽩写了。参考⽂章:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论