查询数据,保存到CSV文件的Python代码

简介:   #读取文本文档,生成数组,将数组元素逐一传给获取数据的函数,然后写入CSV文件。可以先运行win(),再运行mian()  import requests  from lxml import etree  from selenium import webdriver  from selenium.webdriver.common.by import By  import time

  #读取文本文档,生成数组,将数组元素逐一传给获取数据的函数,然后写入CSV文件。可以先运行win(),再运行mian()

  import requests

  from lxml import etree

  from selenium import webdriver

  from selenium.webdriver.common.by import By

  import time

  import openpyxl

  from selenium.webdriver.common.action_chains import ActionChains

  headers={

  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',

  }

  driver=webdriver.Chrome(r'D:\Python\chromedriver.exe')

  driver.get("https://datasearch.chinanpo.gov.cn/gsxt/newList")

  url=driver.current_url

  #切换到当前窗口

  def win():

  handles=driver.window_handles

  driver.switch_to.window(handles[0])

  #读取文本文档并生成数组

  def text():

  txt=open('test.txt')

  txt=txt.read()

  txt=txt.split('

  ')

  #print(txt)

  return txt

  #将二维数组保存到csv文件

  def writetocsv(datalist):

  with open('cpi20210614.csv','a') as f:

  print('saving.....')

  for row in datalist:

  f.write(",".join(row)+"

  ")

  print('saving OK')

  return True

  #获取数据

  def getdata(name):

  datalist=[]

  i=driver.find_element_by_xpath('//input[@class="search_input ant-input"]')

  i.clear()

  i.send_keys(name)

  time.sleep(1)

  driver.find_element_by_xpath('//span[@class="search_button"]').click()

  time.sleep(2)

  res=driver.find_element_by_xpath('//div[@class="search_title"]').text

  print(res)

  data=[]

  data.append(name)

  data.append(res)

  datalist.append(data)

  return datalist

  #保存到CSV的方法

  def mian():

  txt=text()

  while len(txt)!=0:

  time.sleep(2)

  name=txt[0]

  try:

  datelist=getdata(name)

  s=writetocsv(datelist)

  if s:

  print(name+"完成")

  txt.pop(0)

  else:

  pass

  except:

  print(name,end='')

  print('稍等再试')

  time.sleep(2)

  driver.refresh()

  time.sleep(2)

  读取卖二手文本文档,生成数组,将数组元素逐一传给获取数据的函数,然后写入CSV文件。可以先运行win(),再运行mian()

目录
相关文章
|
1天前
|
缓存 开发者 Python
探索Python中的装饰器:简化代码,增强功能
【10月更文挑战第35天】装饰器在Python中是一种强大的工具,它允许开发者在不修改原有函数代码的情况下增加额外的功能。本文旨在通过简明的语言和实际的编码示例,带领读者理解装饰器的概念、用法及其在实际编程场景中的应用,从而提升代码的可读性和复用性。
|
2天前
|
设计模式 缓存 监控
Python中的装饰器:代码的魔法增强剂
在Python编程中,装饰器是一种强大而灵活的工具,它允许程序员在不修改函数或方法源代码的情况下增加额外的功能。本文将探讨装饰器的定义、工作原理以及如何通过自定义和标准库中的装饰器来优化代码结构和提高开发效率。通过实例演示,我们将深入了解装饰器的应用,包括日志记录、性能测量、事务处理等常见场景。此外,我们还将讨论装饰器的高级用法,如带参数的装饰器和类装饰器,为读者提供全面的装饰器使用指南。
|
2天前
|
存储 算法 搜索推荐
Python高手必备!揭秘图(Graph)的N种风骚表示法,让你的代码瞬间高大上
在Python中,图作为重要的数据结构,广泛应用于社交网络分析、路径查找等领域。本文介绍四种图的表示方法:邻接矩阵、邻接表、边列表和邻接集。每种方法都有其特点和适用场景,掌握它们能提升代码效率和可读性,让你在项目中脱颖而出。
14 5
|
2天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
11 4
|
4天前
|
缓存 开发者 Python
探索Python中的装饰器:简化和增强你的代码
【10月更文挑战第32天】 在编程的世界中,简洁和效率是永恒的追求。Python提供了一种强大工具——装饰器,它允许我们以声明式的方式修改函数的行为。本文将深入探讨装饰器的概念、用法及其在实际应用中的优势。通过实际代码示例,我们不仅理解装饰器的工作方式,还能学会如何自定义装饰器来满足特定需求。无论你是初学者还是有经验的开发者,这篇文章都将为你揭示装饰器的神秘面纱,并展示如何利用它们简化和增强你的代码库。
|
2天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
11 2
|
4天前
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
26 3
|
3天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
10 1
|
6天前
|
设计模式 缓存 测试技术
Python中的装饰器:功能增强与代码复用的艺术####
本文将深入探讨Python中装饰器的概念、用途及实现方式,通过实例演示其如何为函数或方法添加新功能而不影响原有代码结构,从而提升代码的可读性和可维护性。我们将从基础定义出发,逐步深入到高级应用,揭示装饰器在提高代码复用性方面的强大能力。 ####
|
4天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
下一篇
无影云桌面