Python爬虫时遭遇的乱码证书问题和不一样的源码(selenium)

今天使用Python爬一个网站
真是命途多舛,话不多说,从盘古开天辟地说起

from urllib import request

导入包 ,没话说

  with request.urlopen('http://www.10086020.com/txffc/kjls/txffckj.html') as f:
        data=f.read()
        print(data.decode('UTF-8'))

但是出了证书问题 ,于是研究甚久
后来经过百度大神的教导,方得其解

import ssl
context = ssl._create_unverified_context()
 with request.urlopen('http://www.10086020.com/txffc/kjls/txffckj.html',context="context") as f:
        data=f.read()
        print(data.decode('gb2312'))

这样data就直接被抓下来辣!

但是出了问题,抓下来的数据出错了!!!
print(data)

那直接打印呢~ -------------是乱码
找了好久终于发现 ,原来是网页的charset不对
所以我们要将decode后面改成网页的charset

print(data.decode('gb2312'))

终于改好了!开始抓包!
抓出来了~!
哇 和原网页F12抓下来的不一样哇
研究甚久发现,原来是其调用了js的码才没法抓到真源码
那就只能打开浏览器抓源码了
所以我们使用selenium中的webdriver抓码
打开一次模拟器后 爬完再将浏览器关了就能爬到数据
具体方法如下

from selenium import webdriver
browser = webdriver.Firefox(executable_path='\go019\geckodriver')
    browser.get("http://www.10086020.com/txffc/kjls/txffckj.html")
    print(browser.page_source)
    browser.close()

我们会发现executable_path这个参数,如果不加很多都会报错说找不到geckodriver
于是我们要下一个geckodriver 然后放到目录下

https://github.com/mozilla/geckodriver/releases
然后就可以运行拉
终于抓到了 真麻烦啊

你可能感兴趣的:(Python开发)