爬虫(二)使用urllib爬取百度贴吧的数据

下一期我就不用urllib来抓取数据了,因为urllib现在已经很少人用,大部分人用得是requests,requests也是基于底层urllib的一个模块。

首先我先来讲一下关于如何使用动态的UA!
动态UA就是指在自己创建的一个列表里随机选择一个UA当做请求浏览器的一个请求头.
我们先自定义一个列表User_Agents,然后将要添加的UA传进去.
UA大全

User_Agents = ['User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36','Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)']

传入进去之后我们使用random模块中的choice去随机选择UA

from random import  choice
headers = {'User-Agent': choice(User_Agents)}

至此一个动态UA就完成了!
接下来给大家献上爬取百度贴吧的代码
思路:我们知道要爬取有页数的url就要找出其中的规律
我们根据百度贴吧每页翻页的url可以得出基础的url是base_html='https://tieba.baidu.com/f?ie=utf-8&{}

from urllib.request import urlopen,Request
from random import  choice
from urllib.parse import quote,urlencode#定义一个得到url数据的函数
def get_html(url):User_Agents = ['User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36','Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)']headers = {'User-Agent': choice(User_Agents)}#伪装浏览器response = Request(url=url, headers=headers)#获取响应html = urlopen(response)#把读的到数据返回return html.read()#定义一个保存数据文件的函数
def save_html(file_name,html_bytes):with open(file_name,'wb') as rfile:rfile.write(html_bytes)rfile.close()
#定义一个主函数
def main():concent = input('请输入要下载的内容:')num=input('请输入要下载的页数:')base_html='https://tieba.baidu.com/f?ie=utf-8&{}'for pn in range(int(num)):arg={'pn':pn*50,'kw':concent}file_name='第'+str(pn+1)+'页'#将arg转码arg = urlencode(arg)print(f'正在下载{concent}的'+file_name)#base_html='https://tieba.baidu.com/f?ie=utf-8&{pn*50}html=base_html.format(arg)#得到网页里的数据html_bytes=get_html(html)save_html(file_name,html_bytes)#让程序跑起来
if __name__ == '__main__':main()print('下载完成')

这是爬取内容个每页的源代码,要获取相应的图片和内容还需要去解析提取。

看完的点个赞吧,喜欢的可以点点关注哦!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/449300.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centOS/Linux系统安全加固方案手册

服务器系统:centos8.1版本 说明:该安全加固手册最适用版本为centos8.1版本,其他服务器系统版本可作为参考。 1.账号和口令 1.1 禁用或删除无用账号 减少系统无用账号,降低安全风险。 操作步骤  使用命令 userdel <用户名> 删除不必要的账号。  使用命令 passwd…

20240202在WIN10下使用fast whisper缺少cudnn_ops_infer64_8.dll

20240202在WIN10下使用fast whisper缺少cudnn_ops_infer64_8.dll 2024/2/2 10:48 https://blog.csdn.net/feinifi/article/details/132548556 Could not locate cudnn_ops_infer64_8.dll. Please make sure it is in your library path!解决办法 安装cuDNN c:\faster-whisper-…

芯片设计公司ERP管理生产流程:从设计到制造的全面优化

随着科技的飞速发展&#xff0c;芯片设计公司在整个电子产业链中的地位日益重要。为了提高生产效率、降低成本&#xff0c;许多芯片设计公司选择引入ERP(企业资源计划)管理系统来优化生产流程。本文将详细介绍芯片设计公司如何利用ERP管理生产流程。 一、ERP系统概述 ERP系统是…

Hadoop:HDFS学习巩固——基础习题及编程实战

一 HDFS 选择题 1.对HDFS通信协议的理解错误的是&#xff1f; A.客户端与数据节点的交互是通过RPC&#xff08;Remote Procedure Call&#xff09;来实现的 B.HDFS通信协议都是构建在IoT协议基础之上的 C.名称节点和数据节点之间则使用数据节点协议进行交互 D.客户端通过一…

基于WordPress开发微信小程序1:搭建Wordpress

2年前&#xff0c;在知乎上提问&#xff1a;多数公司为什么宁愿自研也不用wordpress二次开发建站&#xff1f; - 知乎 (zhihu.com)&#xff0c;收到了&#xff0c;很多回答 自己打算做一下提升&#xff0c;便有了自己基于wordpress开发微信小程序的想法 项目定位 基于wordpre…

VUE开发记录

1、VUE模板传递参数到JS方法 <select-language :value"item.language" change"selectLanguage($event, key)"></select-language>selectLanguage(value, key){console.log(value, key) }, 2、Element框架el-form-item自定义label和内容 <…

Linux实验记录:使用Samba或NFS实现文件共享

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; FTP实现了文件传输&#xff0c;而非…

操作系统(10)----从写程序到程序运行

目录 一.从写程序到程序运行 二.链接 三.如何将逻辑地址转为物理地址 1.绝对装入 2.可重定位装入&#xff08;静态重定位&#xff09; 3.动态运行时装入&#xff08;动态重定位&#xff09; 一.从写程序到程序运行 程序员通过编辑器编辑源代码文件&#xff0c;通过编译后…

前端常见标签

<li> (List Item)&#xff1a;定义列表中的一个项目&#xff08;项&#xff09; <ul> (Unordered List)&#xff1a;定义无序列表 <ol> (Ordered List)&#xff1a;定义有序列表 <a> (Anchor Tag)&#xff1a;定义超链接 <ul><li>苹…

Datax问题记录

1、同步mysql&#xff1a;OS errno 24 - Too many open files 2023-11-20 12:30:04.371 [job-0] ERROR JobContainer - Exception when job run com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-07], Description:[读取数据库数据失败. 请检查您的…

Vue 上门取件时间组件

本文使用vue2.0elementui 制作一个上门取件时间组件&#xff0c;类似顺丰&#xff0c;样式如下&#xff1a; 大概功能&#xff1a;点击期望上门时间&#xff0c;下面出现一个弹框可以选择时间&#xff1a; 首先我们定义一些需要的数据&#xff1a; data() {return {isDropdown…

P1967 [NOIP2013 提高组] 货车运输

[NOIP2013 提高组] 货车运输 题目背景 NOIP2013 提高组 D1T3 题目描述 A 国有 n n n 座城市&#xff0c;编号从 1 1 1 到 n n n&#xff0c;城市之间有 m m m 条双向道路。每一条道路对车辆都有重量限制&#xff0c;简称限重。 现在有 q q q 辆货车在运输货物&#x…