想学编程但没有好的资料 来这 Python 爬取信息并写入数据,最详细教程

news2024/12/23 9:39:14

提示一下:我这个中一些用import引用的软件包,你们小白记得要下载哟

不然的话会报错的哟!

下载软件包很简单的!

在这里插入图片描述

话不多说,直接开始…

from selenium.webdriver.common.by import By
from selenium import webdriver
import re, requests, csv
from bs4 import BeautifulSoup
from time import sleep

为了打印字典好看

from pprint import pprint

不是很好 有些没有提取到 后面再优化吧

def read(url, headers):
# opens = webdriver.ChromeOptions()
# opens.add_experimental_option(‘detach’, True)
driver = webdriver.Chrome()
driver.get(url=url)
# 自动翻页
for x in range(1, 40, 4): # 1 3 5 7 9 在你不断的下拉过程中, 页面高度也会变的
sleep(1)
j = x / 9 # 1/9 3/9 5/9 9/9
# document.documentElement.scrollTop 指定滚动条的位置
# document.documentElement.scrollHeight 获取浏览器页面的最大高度
js = ‘document.documentElement.scrollTop = document.documentElement.scrollHeight * %f’ % j
driver.execute_script(js)
# 发起get请求
r = requests.get(url=url, headers=headers)
r.encoding = r.apparent_encoding
text = r.text
# 要用记得改路径
fliename = “D:\Python编译器\数据分析\jd.html”
# 建三个空列表把内容放进去
list_moeny = []
list_phone = []
list_soup = []
# 保存成一个html文件 方便使用bs4进行数据分析
with open(fliename, “w”, encoding=‘utf-8’) as fp:
fp.write(text)
fp.close()
# bs4
‘’’
别问为什么不用其他的提取方法
因为我发现只有用bs4提取代码最少
但是bs4提取不完整
无所谓 谁用谁改
‘’’
dome = open(fliename, encoding=“utf-8”)
soup = BeautifulSoup(dome, ‘html.parser’)

# 手机价格
def money():
    money_text = soup.find_all(attrs={"class": "p-price"})
    re_h = re.findall("<i.*?data-price=.*?>(.*?)</i>", str(money_text), re.S)
    for v in re_h:
        list_moeny.append(v)

# 手机型号
def phone_texts():
    phone_text = soup.find_all(attrs={"class": "p-name p-name-type-2"})
    brands = re.findall("<i.*?class=.*?id=.*?>(.*?)</i>", str(phone_text), re.S)
    for p in brands:
        list_phone.append(p)

# 店铺名称
def soup_text():
    souptext = soup.find_all(attrs={"class": "curr-shop hd-shopname"})
    re_h = re.findall("<a.*?class=.*?href=.*?onclick=.*?target=.*?title=.*?>(.*?)</a>", str(souptext), re.S)
    for s in re_h:
        list_soup.append(s)

money()
phone_texts()
soup_text()
driver.quit()

# dicts={}
# 把数据以字典的形式写入csv
def write():
    with open("D:\Python编译器\数据分析\\京东商品信息.csv", "w", encoding='utf-8', newline='') as fp:
        head = ["手机型号", "店铺信息", "价格"]
        writer = csv.DictWriter(fp, fieldnames=head)
        writer.writeheader()
        for a, b, c in zip(list_phone, list_soup, list_moeny):
            dicts = {"手机型号": a, "店铺信息": b, "价格": c}
            writer.writerow(dicts)
        fp.close()

write()

程序主函数

if name == ‘main’:
url = ‘https://search.jd.com/Search?keyword=%E5%8D%8E%E4%B8%BAp40&enc=utf-8&suggest=1.his.0.0&wq=&pvid=275fb84df1f341d99a8e35ca03088396’
headers = {
‘referer’: ‘https://www.jd.com/’,
‘user-agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36’,
‘upgrade-insecure-requests’: ‘1’,
}
read(url, headers)

谢谢观看,制作不易,不喜勿喷

在这里插入图片描述

如果喜欢,请点赞加关注哟

小白们,可以照着敲一遍哈

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5月2日第壹简报,星期二,农历三月十三

5月2日第壹简报&#xff0c;星期二&#xff0c;农历三月十三坚持阅读&#xff0c;静待花开1. “港车北上”政策公布&#xff1a;6月1日起接受申请&#xff0c;7月1日起可驶入广东&#xff0c;将惠及45万香港车主。2. 全球女性第一人&#xff01;董红娟登顶全部14座8000米级高峰…

nvm 安装 node,配置 yarn,cnpm

nvm 安装 node&#xff0c;配置 yarn, cnpm nvmnodeyarncnpm nvm 是什么&#xff1f;nodejs 的版本管理工具&#xff0c;为了解决 node.js 各种版本存在不兼容现象可以通过它安装和切换不同版本的 node.js重要&#xff1a;完全卸载本地 node下载链接 卸载完成之后&#xff0c;…

初识C++之智能指针

目录 一、智能指针的概念 二、RAII 三、 智能指针的拷贝构造 1. 智能指针的拷贝构造问题 2. C库中的智能指针 2.1 auto_ptr 2.2 unique_ptr 2.3 shared_pt 2.4 weak_ptr 四、shared_ptr的循环引用问题 五、 定制删除器 一、智能指针的概念 在了解智能指针的概念前&…

Java连接与操作Perforce

对于源码控管的基本使用来说&#xff0c; 使用Perforce的客户端工具就可以了&#xff0c; 但是某些应用场景下可能需要使用代码来与Perforce服务器进行交互&#xff0c; 比如&#xff1a; 自动部署流程中的自动取代码&#xff08;该场景一般也可以使用P4命令行工具实现&#x…

Windows共享内存与死锁

实验一 一、实验内容或题目&#xff1a; 利用共享内存完成一个生产者进程和一个消费者进程的同步。 二、实验目的与要求&#xff1a; 1、编写程序&#xff0c;使生产者进程和消费者进程通过共享内存和mutex来完成工作同步。 2、了解通过操作系统接口调用&#xff0c;实现通…

Linux字符设备驱动

前言 代码结构简单&#xff0c;旨在用最简单的原理理解最主要的框架逻辑&#xff0c;细节需要自行延伸。 -----------------学习的基础底层逻辑 基础步骤 开发linux内核驱动需要以下4个步骤&#xff1a; 编写驱动代码编写makefile编译和加载驱动编写应用程序测试驱动 由于硬…

Android9.0 系统Framework发送通知流程分析

1.前言 在android 9.0的系统rom定制化开发中,在systemui中一个重要的内容就是系统通知的展示,在状态栏展示系统发送通知的图标,而在 系统下拉通知栏中展示接收到的系统发送过来的通知,所以说对系统framework中发送通知的流程分析很重要,接下来就来分析下系统 通知从frame…

开发攻城狮必备的Linux虚拟机搭建指南|原创

hi&#xff0c;我是阿笠&#xff01; 这篇文章主要面对的是不常搭建Linux操作系统环境的开发同学&#xff0c;文中介绍了基本操作步骤并且提供了相关云盘资源&#xff0c;都是为了节约时间&#xff01; 因为从我自身来讲&#xff0c;作为一名后端开发&#xff0c;经常需要练习一…

c#笔记-内置类型

内置类型 内置类型是一些有关键字表示的类型。关键字具有非常高的优先级&#xff0c;可以让你在没有别的配置的情况下&#xff0c; 只要用的是c#就可以使用。这也意味着这些类型是非常重要&#xff0c;或是基本的东西。 整数&#xff1a;byte, sbyte, short, ushort, int, ui…

【Python入门】搭建开发环境-安装Pycharm开发工具

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于Python零基础入门系列&#xff0c;本专栏主要内容为Python基础语法、判断、循环语句、函…

【数据结构】线性表之单链表(讲解实现——带动图理解)

文章目录 单链表单链表主体结构单链表操作函数介绍单链表操作函数实现单链表的初始化&#xff1a;打印函数单链表插入函数&#xff1a;头插尾插指定结点后插入和查找函数单链表结点之前插入数据 单链表删除函数头删尾删指定结点后删除指定结点删除 销毁单链表 文件分类test.cLi…

【STM32】基础知识 第十课 CubeMx

【STM32】基础知识 第十课 CubeMx STM32 CubeMX 简介安装 JAVACubeMX 安装新建 STM32 CubeMX 工程步骤新建工程时钟模块配置GPIO 配置生成源码 main.c STM32 CubeMX 简介 CubeMX (全称 STM32CubeMX) 是 ST 公司推出的一款用于 STM32 微控制器配置的图形化工具. 它能帮助开发者…

「Bug」解决办法:Could not switchto this profil,无法使用节点的解决方法,彻底解决

♥️作者&#xff1a;白日参商 &#x1f935;‍♂️个人主页&#xff1a;白日参商主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…

二十五、OSPF高级技术——开销值、虚链路、邻居建立、LSA、静默接口

文章目录 调试指令&#xff08;三张表&#xff09;1、邻居表&#xff1a;dis ospf peer brief2、拓扑表&#xff08;链路状态数据库&#xff09;&#xff1a;dis ospf lsdb3、路由表&#xff1a;dis ip routing-table 一、OSPF 开销值/度量值&#xff08;cost&#xff09;1、co…

Python基础合集 练习15(内置函数 匿名函数)

匿名函数 以lambda开头表示这是匿名函数&#xff0c;之后的x,y是函数参数 def sub(a,b): return a-b print(sub(10,3)) print(lambda x,y:x-y) sublambda x,y:x-y print(sub(8,4)) def game(math,chinese,english): “”" 功能&#xff1a;计算三科的成绩 math&#xf…

谈谈多线程的上线文切换

大家好&#xff0c;我是易安&#xff01; 我们知道&#xff0c;在并发程序中&#xff0c;并不是启动更多的线程就能让程序最大限度地并发执行。线程数量设置太小&#xff0c;会导致程序不能充分地利用系统资源&#xff1b;线程数量设置太大&#xff0c;又可能带来资源的过度竞争…

【C++】隐式转换与explicit关键字、运算符及其重载、this关键字

C隐式转换与explicit关键字 隐式构造函数 隐含的意思是不会明确告诉你要做什么 隐式转换 C允许编译器对代码执行一次隐式转换&#xff0c;而不需要使用casr强制转换 例1 #include <iostream> #include <string>class Entity { private:std::string m_Name;in…

13 SQL——数值函数

1 ceil() 数值向上取整&#xff08;前提是小数位不是0&#xff09; select ceil(1.2);2 floor() 数值向下取整&#xff08;前提是小数位不是0&#xff09;select floor(1.8);3 mod() 取&#xff08;x%y&#xff09;的模运算&#xff08;求余数运算&#xff09; select …

10. hr 综合面试题汇总

10. hr 综合面试题汇总 C++软件与嵌入式软件面经解析大全(蒋豆芽的秋招打怪之旅) 本章讲解知识点 1.1 HR心理复盘1.2 HR常问问题——学校的表现怎么样啊?1.3 HR常问问题——了解我们公司吗?1.4 HR常问问题——个人情况1.5 HR常问问题——业余生活1.6 HR常问问题——薪资待…

【源码角度】为什么AQS这样设计

AQS&#xff08;AbstractQueuedSynchronizer&#xff0c;抽象同步队列器&#xff09;是 一个基于 FIFO的双端队列。它分为独占模式和共享模式&#xff0c;本文主要围绕独占模式进行讲解&#xff0c;共享模式的原理和独占模式相似&#xff0c;最后会提一嘴。 场景代入 其实AQS模…