Python-爬虫初体验

2023-11-12

在网易云课堂上看的教学视频,现在来巩固一下知识:

  1. 先确定自己要爬的网站,以新浪新闻网站为例确 这里写图片描述
import requests  #跟java的导包差不多,python叫导入库
res = requests.get('http://news.sina.com.cn/china/')#爬取网页内容
res.encoding = 'utf-8' #将得到的网页内容转码,避免乱码
print(res.text) #将网页内容以text形式输出

这里写图片描述

2.简单学习BeautifulSoup

from bs4 import BeautifulSoup
a = '<a href="#" name=abc age=123>i am a link</a>'
soup = BeautifulSoup(a, 'html.parser') #html.parser为语法剖析器
print(soup.select('a')[0]) #得到a标签里的内容
print(soup.select('a')[0]['href']) #得到a标签里href的内容
print(soup.select('a')[0]['name']) #得到a标签里age的内容

这里写图片描述

3.正式抓取新浪新闻网页:

  • 先观察新浪新闻网页的构造这里写图片描述可以看出新闻标题,时间, 链接都放在了.news-item下
  • 抓取
import requests
from bs4 import BeautifulSoup
res = requests.get('http://news.sina.com.cn/china/')
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text, 'html.parser')
for news in soup.select('.news-item'): #.news-item是一个class,如果是id的话可以改为'#news-item'
    print(news)

观察抓取的内容观察抓取的内容,然后在进一步的抓取

import requests
from bs4 import BeautifulSoup
res = requests.get('http://news.sina.com.cn/china/')
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text, 'html.parser')
for news in soup.select('.news-item'):
    if len(news.select('h2')) > 0:
        h2 = news.select('h2')[0].text #得到h2标签里的文字
        time = news.select('.time')[0].text
        a = news.select('a')[0]['href'] #得到a标签里的链接
        print(time, h2, a) #打印抓取的内容

这里写图片描述
爬取新浪网页先写到这里,等以后学新的知识在写剩下的内容

现在是福利时间,这个是我在知乎上看到的一个python爬虫程序:50⾏python爬⾍代码, 带你正确打开知乎新世界!
新学了python,就想拿这个练练手,里面有源程序,只不过我改的更简洁了一点代码量少了一半以上,哈哈

  • 第一步还是观察网页结构
    这里写图片描述
    可以看到图片都在noscript标签里面的src连接里

改正后的代码 Ps:如果如果想运行的必须把知乎原本的代码下载下来,最好还是把源码分析(知乎上有)看一遍,再来看我这个,里面有文件夹的结构可以不用自己建,然后把下面这段代码替代原来的代码。注意是python3



from selenium import webdriver
#import time

import urllib.request

from bs4 import BeautifulSoup


    
def main():
    # *********  Open chrome driver and type the website that you want to view ***********************

    driver = webdriver.Firefox()   # 打开浏览器

    # 列出来你想要下载图片的网站

    # driver.get("https://www.zhihu.com/question/35931586") # 你的日常搭配是什么样子?
    # driver.get("https://www.zhihu.com/question/19671417") # 拍照时怎样摆姿势好看?
    # driver.get("https://www.zhihu.com/question/26037846") # 什么脸型的女生好看?

    # ****************   Prettify the html file and store raw data file  *****************************************

    result_raw = driver.page_source # 这是原网页 HTML 信息
    result_soup = BeautifulSoup(result_raw, 'html.parser')
    count = 0
    with open("./output/rawfile/img_meta.txt", 'w',) as img_meta: #打开文件必须是先存在
        for rich in result_soup.select('noscript'):
            img_url = rich.select('img')[0]['src'] #得到下载图片的连接
            line = str(count) + "\t" + img_url  + "\n"
            img_meta.write(line) #可以学也可以不写
            urllib.request.urlretrieve(img_url, "./output/image/" + str(count) + ".jpg") # 一个一个下载图片,这个urllib具体用法还不知道
            count += 1

    img_meta.close()
    print("Store meta data and images successfully!!!")


if __name__ == '__main__':
    main()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python-爬虫初体验 的相关文章

  • 【计算机网络】HTTP协议详解(八):HTTP网关

    HTTP网关 文章目录 HTTP网关 一 网关 Gateway 二 网关的分类 1 HTTP 服务器端网关 2 HTTP 客户端网关 3 HTTP HTTPS 服务器端安全网关 4 HTTPS HTTP 客户端安全加速器网关 5 资源网关
  • sshpass

    sshpass 安装 sshpass Linux 软件工具安装 源码安装 测试 sshpass 在使用 ssh scp 等命令进行远程操作的时候 必须手动输入密码 这就为自动化的执行造成困扰 sshpass 可以在命令行直接使用密码来进行远
  • Android Studio 常用快捷按键

    大小写转换 Cmd Shift U Ctrl Shift U 注释代码 Cmd Ctrl 注释代码 Cmd Option Ctrl Alt 格式化代码 Cmd Option L Ctrl Alt L 清除无效包引用 Option Contr
  • Python实现Mean Shift算法

    声明 代码的运行环境为Python3 Python3与Python2在一些细节上会有所不同 希望广大读者注意 本博客以代码为主 代码中会有详细的注释 相关文章将会发布在我的个人博客专栏 Python从入门到深度学习 欢迎大家关注 在K Me
  • 【PTA】 7-1 矩阵链相乘问题 (20 分)

    输入 5 30 35 15 5 10 20 输出 11875 代码 include
  • Python Numpy数组保存

    Numpy提供了几种数据保存的方法 以3 4数组a为例 1 a tofile filename bin 这种方法只能保存为二进制文件 且不能保存当前数据的行列信息 文件后缀不一定非要是bin 也可以为txt 但不影响保存格式 都是二进制 这
  • websocket没准备好如何解决_websocket没准备好点确定继续怎么解决,这事android? 爱问知识人...

    请采纳点赞 你可以把WebSocket看成是HTTP协议为了支持长连接所打的一个大补丁 它和HTTP有一些共性 是为了解决HTTP本身无法解决的某些问题而做出的一个改良设计 在以前HTTP协议中所谓的keep aliveconnection
  • RE整改实例——接口缝隙引起的EMC问题整改

    前言 背景 CT某一产品中的控制电路 在RE测试时候750MHz频点超过3dB 整改方法 经过近场测量分析 辐射来源于接口缝隙 经公式计算 750MHz频率引起的对应波长 0 4m 在EMC允许缝隙的长度选择中建议小于二十分之一波长 则 2
  • 只等你来!OpenAtom XuperChain 开发者夏季论坛来啦

    OpenAtom XuperChain 开源两周年之际 我们将于 6 月 25 日在上海浦东新区举办 OpenAtom XuperChain 开发者夏季论坛 特邀研究机构 企业等开源生态合作伙伴 共同探讨区块链技术发展路径和落地方向 本次论
  • solr6.6.0部署到tomcat

    准备工作 solr 6 6 0 apache tomcat 8 jdk1 8 0 131 部署 首先把solr 6 6 0 server solr webapp中的webapp目录拷贝到apache tomcat 8 5 15下的webap
  • 数据结构与算法-基础排序算法及TopK问题(Python)

    排序 基础排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序 经典问题 TopK 堆排序 快速排序 基础排序算法 如果在面试中遇到排序算法 先问清楚数据的特点 结合具体的业务场景 多和面试官交流 先陈述思路 得到面试官肯定以后再编码
  • Java8方法引用

    内容简介 方法引用Demo详解 通过5种语法使用方法引用 方法引用使用总结 1 在Java8中方法引用Demo详解 1 1 方法引用出现的背景 在使用Lambda表达式的时候 我们实际上传递进去的代码就是一种解决方案 拿什么参数做什么操作
  • Spring MVC中如何限制Controller为POST或GET方式接收参数呢?

    转自 Spring MVC中如何限制Controller为POST或GET方式接收参数呢 在Web页面开发中 最常用的接收参数值方式有 GET和POST方式 那么SpringMVC中如何定义参数的接收方式呢 实现思路 只需在注解的时 使用m
  • mark_as_advanced

    Mark cmake cached variables as advanced mark as advanced CLEAR FORCE VAR VAR2 Mark the named cached variables as advance
  • 什么是子查询?

    当一个查询结果是另一个查询的条件的时候 那么就称为子查询 子查询是在SQL语句内的另外一条SELECT语句 在SELECT INSERT UPDATE或DELETE命令中只要是表达式的地方都可以包含子查询 子查询甚至可以包含在另外一个子查询
  • 自动化测试-Appium-Desired Capabilities参数详解

    分类 定义与说明 General Capabilities 通用功能 Update settings Android Only UIAutomator 1 UIAutomator2 Only Espresso Only iOS Only i
  • 数据仓库灵魂30问之如何建设数据中台?一幅图说清中台。

    什么是中台 什么是数据中台 数据仓库实现了企业数据模型的构建 大数据平台解决了海量 实时数据的计算和存储问题 数据中台要解决什么呢 数据如何安全的 快速的 最小权限的 且能够溯源的被探测和快速应用的问题 数据中台不应该被过度的承载平台的计算

随机推荐

  • 进程同步,信号量,互斥变量等说明

    0 前言 工作三年 敲了3年代码 PHP C Java C 等 开发过几种产品 非计算机科班出身 全部编程是自学最近闲来无事买了一本 计算机操作系统 第四版 学一下个人感觉对比较重要的章节 增加对编程的理解 1 进程的描述 1 1 进程的定
  • Python多元线性回归预测模型实验完整版

    多元线性回归预测模型 实验目的 通过多元线性回归预测模型 掌握预测模型的建立和应用方法 了解线性回归模型的基本原理 实验内容 多元线性回归预测模型 实验步骤和过程 1 第一步 学习多元线性回归预测模型相关知识 一元线性回归模型反映的是单个自
  • 在html中取消超链接的下划线

    在html的超链接a标签中取消下划线需要用到text decoration a text decoration none
  • AI部署之路

    作者 Oldpan 编辑 汽车人 点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 模型部署 技术交流群 后台回复 模型部署工程 获取基于TensorRT的分类 检测任务的部署源码 好久没更文了
  • WSL2加载独立硬盘和设置固定IP

    最近发现了win10 包括win11 上的神器 Linux子系统 抱着玩一玩的态度安装了 琢磨了几天 逐步把Ubuntu完善起来了 发现完全可以当作WIN Linux双系统使用 还不用重启系统 作为生产力工具绰绰有余 总结了常用的工具软件和
  • CPU、GPU、DPU、TPU、NPU...傻傻分不清楚?实力扫盲——安排

    人工智能的发展离不开算力的支持 算力又是依附于各种硬件设备的 没有了算力设备的加持 就好比炼丹少了丹炉一样 可想而知 人工智能智能也就无用武之地了 以深度学习为主的人工智能方向的发展更是离不开强大的算力支持 随着深度学习的不断发展 各种各样
  • 登录验证,复杂验证

    效果如图
  • 程序员为什么要挤破头也要进大厂?别说是拧螺丝,递扳手我也愿意去!

    大家好 前段时间写了一篇关于程序员的年薪五十万指南 引起了一些共鸣 有些读者私信问我 现在不是大厂竞争很激烈吗 再说大厂的薪水待遇也没有比一些二线公司更好呀 既然如此 那为什么我们还要挤破脑袋进大厂呢 今天就和大家闲聊几句 以下说的仅代表我
  • K8S的卷、临时卷、持久卷、PV、PVC、SC

    博客 cbb777 fun 全平台账号 安妮的心动录 github https github com anneheartrecord 下文中我说的可能对 也可能不对 鉴于笔者水平有限 请君自辨 有问题欢迎大家找我讨论 为什么需要卷 容器中的
  • Maven项目添加mysql-connector-java依赖失败:dependency ‘mysql-connector-java‘not found

    在IDEA中搭建Scala项目 需要将处理过的数据存储到本地mysql数据库中 故需要在Maven的pom xml中添加mysql connector java依赖包 可能是我之前迁移AS项目时更改了在C盘User目录下的 m2 仓库文件
  • 对视觉目标检测的整体认知(基于目标检测综述)

    计算机视觉领域研究的绝大多数问题均存在诸多不确定性因素 因为图像理解是成像的逆过程 成像是从三维向二维投影的过程 在此过程中不仅会丢失深度信息 而且光照 材料特性 朝向 距离等信息都反映成唯一的测量值 即灰度或色彩 而要从这唯一的测量值中恢
  • 双向链表的实现

    定义一个双向链表 定义双向链表 typedef struct LinkNode int data 数据域 LinkNode next 下一个节点 LinkNode last 上一个节点 LinkNode 节点域 LinkList 头结点 初
  • NeRF:神经辐射场论文原理讲解

    一 新视角合成 NeRF是开创了一种全新的视角合成方法 新视角合成任务指的是给定源图像 Source Image 及对应的源姿态 Source Pose 以及目标姿态 Target Pose 渲染生成目标姿态对应的图片 Target 源姿态
  • java: 无法从静态上下文中引用非静态 方法

    Error 11 9 java 无法从静态上下文中引用非静态 方法 printArraylist java util ArrayList
  • 分享一个最好用的剪切板管理软件

    对于每一个离不开电脑的朋友来说 不断的复制 粘贴 剪切 粘贴 是常有的事 而且电脑断电 程序异常退出 因手欠而错关了编辑器等类似噩梦经常发生 之前我找到一个名叫 M8 Free Clipboard 是用起来还算方便 可是免费用户只能保存有限
  • LLc用simplis 如何建模

    简单来说 Simplis 模型的建模方法包括 数据预处理 特征工程 模型设计和调参 首先 需要收集所需的数据 并对数据进行预处理 清洗和标准化 然后 需要进行特征工程 确定哪些特征有助于模型预测 并调整特征以提高模型准确性 接下来 根据数据
  • 【初识Git工具】Git工具的基本介绍

    初识Git工具 Git工具的基本介绍 一 什么是Git 1 1 Git简介 1 2 Git和SVN区别 1 3 常用的Git工具 二 Git的起源 三 Git的优点 四 Git的架构 五 Git的基本概念 5 1 仓库 Repository
  • 电子邮件链接mailto_“ 3个链接”电子邮件的历史记录以及曾经发送的每个链接的存档...

    电子邮件链接mailto by Quincy Larson 昆西 拉尔森 Quincy Larson 3个链接 电子邮件的历史记录以及曾经发送的每个链接的存档 The history of the 3 links email and an
  • 深入理解overlayfs(一):初识

    版权声明 本文为CSDN博主 luckyapple1028 的原创文章 遵循CC 4 0 BY SA版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net luckyapple1028 article d
  • Python-爬虫初体验

    在网易云课堂上看的教学视频 现在来巩固一下知识 先确定自己要爬的网站 以新浪新闻网站为例确 import requests 跟java的导包差不多 python叫导入库 res requests get http news sina com