获取网址网页的源代码使用requests库的get函数。
import requests
url = 'https://www.baidu.com'
head={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'}
html = requests.get(url, headers=head)
html.encoding='utf-8'
with open('test.html', 'w', encoding='utf-8') as f:
f.write(html.text)
代码中get函数的headers字典的User-Agent获取方法:检查中Networks菜单的数据包的请求头的user-agent字段
在自己写代码获取网站的源代码时,先查一下浏览器与网站交互的这个属性,这样能获取完整的网页源代码,上面的代码得到的结果有百度网页的脚本源码以及css、html代码。
即使使用过时的User-Agent属性值,即定义head={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'}也能得到完整的js、css、html代码。
若没有自定义这User-Agent的属性值,即上述代码定义html时直接html=requests.get(url)得到的结果只有html代码。
User-Agent的作用是让目标网站误以为本程序是浏览器,并非爬虫。如果是爬虫,就给个html代码,如果不是,给个css和js让浏览器能够渲染。
如果得到的html中文乱码,记着html.encoding属性的设置。现在编码一般都是UTF8了,我觉得我电脑上的一些处理会中文乱码的原因是win10家庭版默认中文编码是gbk,这个问题一时不能解决。
这样应该能愉快地下载网页源代码然后解析进行玩耍了。(邪恶
老实说浏览器右键有个查看网页源码的功能,复制粘贴就好,但这太不程序员。
使用这个函数来下载网页上的图片,代码
import requests
from bs4 import BeautifulSoup
from tellwlib.py.download import download_file
import os
di = 'ok'
if not os.path.exists(di):
os.mkdir(di)
for i in range(1,4):
url = 'https://adnmb2.com/t/27245369?page=%d'%i
# img_srcs=[]
head={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'}
html = requests.get(url, headers=head)
html.encoding='utf-8'
soup = BeautifulSoup(html.text, 'lxml')
img_as = soup.findAll('img', {'class':'h-threads-img'})
for img_a in img_as:
# img_srcs.append(img_a.attrs['data-src'])
data_src = img_a.attrs['data-src']
download_file(data_src, di+'/'+data_src.split('/')[-1])
# print(img_srcs)
tellwlib.py.download.download_file的应用参见tellwlib的描述,或者你有其他的解决方法。
拓展阅读:正则表达式30分钟入门教程
参考链接
1
Python篇----Requests获取网页源码(爬虫基础)