爬虫1 实例

Posted leafchen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫1 实例相关的知识,希望对你有一定的参考价值。

目标:拷贝贴吧前几页html并保存到本地.html文件中

步骤:

  1. 创建动态可变化的url,用来循环访问不同页面。(a. args={‘key‘: ‘value‘}, 来自定义url中的动态参数;b. 使用urllib.parse下的urlencode模块来对动态参数进行转码,防止中文报错)

  2. 使用urllib.request 下的Request模块调用url并创建请求对象,重新封装请求头等信息。

  3. 使用urllib.request下的urlopen模块发送请求,并获取响应值。 .read()读取返回数据。

  4. 使用with open(‘filename‘, ‘wb‘)as f: ------ f.write(响应值.read())来保存数据到文件。

 

"""实例: 下载‘尚学堂’贴吧前几页内容"""

from urllib.request import Request, urlopen
from urllib.parse import urlencode
from fake_useragent import UserAgent



# 获取贴吧网页信息
def get_html(url):
    headers = {
        "User-Agent": UserAgent().chrome        # 获取任意一个版本的谷歌的UserAgent信息
    }
    print(----------, url)
    request = Request(url, headers=headers)
    response = urlopen(request)
    # print(response.read().decode())

    return response.read()


# 保存数据
def save_html(data_bytes, filename):
    with open(filename, wb) as f:      # wb保存,ab追加保存
        print(文件{}保存中....format(filename))
        f.write(data_bytes)
        

# 主函数
def main():
    # 创建参数变量
    teiba_name = input("请输入要下载的贴吧名称: ")
    num = input("要下载的页数: ")
    for i in range(int(num)):
        args = {
            
            kw: teiba_name,       # 贴吧名称
            pn: i*50              # 计算--参数pn(每页显示多少条,会影响pn的值,此处每页显示50条信息)
        }
        # 确定url中的变量:pn、kw, (ie是不变的)
        """
        url 示例
        url = ‘https://tieba.baidu.com/f?kw=%E5%B0%9A%E5%AD%A6%E5%A0%82&ie=utf-8&pn=100‘
        """
        url = "https://tieba.baidu.com/f?ie=utf-8&{}".format(urlencode(args))
        
        # 调用获取网页信息函数
        data_bytes = get_html(url)
        
        # 保存数据
        filename = teiba_name + "" + str(i+1) + "页.html"
        save_html(data_bytes, filename)

        
if __name__ == __main__:
    main()

 

以上是关于爬虫1 实例的主要内容,如果未能解决你的问题,请参考以下文章

创建片段而不从 java 代码实例化它

Python 爬虫实例

网络爬虫实例代码优化 面试重点

片段事务中的实例化错误

爬虫“中国大学排名定向爬虫”实例

(爬虫实例1)构建电影天堂