zoukankan      html  css  js  c++  java
  • requests.get函数学习

    获取网址网页的源代码使用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获取网页源码(爬虫基础)

    2

    bs4解析html文件记录

  • 相关阅读:
    MapReduce教程(一)基于MapReduce框架开发<转>
    postgresql with递归
    mysql中递归树状结构<转>
    java获取上周任意一天的日期
    IBatis批量插入数据
    UI控件篇——UIPageControl及其自定义
    Android 3.0开始引入fragments(碎片、片段)类
    APACHE LOG4J™ 2
    java 反射
    PreparedStatement用途
  • 原文地址:https://www.cnblogs.com/tellw/p/13061812.html
Copyright © 2011-2022 走看看