xpath&csv

csv

一、什么是csv?
1、CSV (Comma Separated Values),即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用的文本格式,用以存储表格数据,包括数字或者字符。很多程序在处理数据时都会碰到csv这种格式的文件。python自带了csv模块,专门用于处理csv文件的读取。

二、csv模块的使用
一、写入csv文件
1 通过创建writer对象,主要用到2个方法。一个是writerow,写入一行。另一个是writerows写入多行
2 使用DictWriter 可以使用字典的方式把数据写入进去
二、读取文件
1 通过reader()读取到的每一条数据是一个列表。可以通过下标的方式获取具体某一个值
2 通过DictReader()读取到的数据是一个字典。可以通过Key值(列名)的方式获取数据

import csv

# csv模块的使用
# 写入csv文件通过创建writer对象,主要用到2个方法。
# 1 、一个是writerow写入一行。另一个是writerows写入多行
# headers = ('name', 'age', 'height')  # 只要能够循环遍历就可以 迭代器 可迭代对象不一定是迭代器
# persons = [
#     ('蒋嘉杰', 20, 185),
#     ('蒋秋月', 26, 160),
#     ('蒋嘉诚', 19, 180),
#     ('蒋秋慧', 25, 160)
# ]
# with open('persons.csv', 'w', encoding='utf-8') as file_obj:
#     writer = csv.writer(file_obj)
#     writer.writerow(headers)
#     for data in persons:
#         writer.writerow(data)
# -----------------------------------------------------------------------
# 一个是writerows写入多行
# headers = ('name', 'age', 'height')  # 只要能够循环遍历就可以 迭代器 可迭代对象不一定是迭代器
# persons = [
#     ('蒋嘉杰', 20, 188),
#     ('蒋秋月', 26, 160),
#     ('蒋嘉诚', 19, 180),
#     ('蒋秋慧', 25, 160)
# ]
# with open('persons.csv', 'w', encoding='utf-8', newline='') as file_obj:
#     writer = csv.writer(file_obj)
#     writer.writerow(headers)
#     writer.writerows(persons)
# 2 、使用DictWriter 可以使用字典的方式把数据写入进去
# headers = ('name', 'age', 'height')
# persons = [
#     {'name': '吴泽琪', 'age': '20', 'height': '178'},
#     {'name': '吴泽', 'age': '20', 'height': '178'},
#     {'name': '吴俊棋', 'age': '20', 'height': '178'}
# ]
# with open('persons.csv', 'w', encoding='utf-8', newline='') as file_obj:
#     Dwriter = csv.DictWriter(file_obj, headers)
#     Dwriter.writeheader()
#     Dwriter.writerows(persons)

# 读取文件
# 1 通过reader()读取到的每一条数据是一个列表。可以通过下标的方式获取具体某一个值
# with open('persons.csv', 'r', encoding='utf-8', newline='') as file_obj:
#     reader = csv.reader(file_obj)
#     for i in reader:
#         print(i[1])  # 如果要取值就按索引取值
# 2 通过DictReader()读取到的数据是一个字典。可以通过Key值(列名)的方式获取数据
with open('persons.csv', 'r', encoding='utf-8', newline='') as file_obj:
    Dreader = csv.DictReader(file_obj)
    for x in Dreader:
        print(x['name'])  # 取值可以通过kye的方式来取


xpath

一、基本概念
1、XPath(XML Path Language)是一种XML的查询语言,他能在XML树状结构中寻找节点。XPath 用于在 XML 文档中通过元素和属性进行导航
2、xml是一种标记语法的文本格式,xpath可以方便的定位xml中的元素和其中的属性值。lxml是python中的一个第三方模块,它包含了将html文本转成xml对象,和对对象执行xpath的功能
二、 结点的关系

xml_content = '''
<bookstore>
<book>
    <title lang='eng'>Harry Potter</title>
    <author>JK.Rowing</author>
    <year>2005</year>
    <price>29<price>
</book>
</bookstore>

1、在上面代码中的是文档节点。
2、在上面代码中的JK.Rowing是 元素节点
3、在上面代码中的lang='eng’是属性节点
4、父(Parent) book元素是title、author、year、price元素的父
5、子(Children) title、author、year、price都是book元素的子
6、同胞(Sibling) title、author、year、price都是同胞
7、先辈(Ancestor) title元素的先辈是 book元素和bookstore元素
三、基本使用
1、工具安装
安装参考网站
https://blog.csdn.net/qq_31082427/article/details/84987723
2、查找某个特定的节点或者包含某个指定的值的节点
3、模块的使用
4、在Python中,我们安装lxml库来使用XPath 技术
lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取HTML/XML数据利用etree.HTML,将字符串转化为Element对象
5、lxml python 官方文档:http://lxml.de/index.html
可使用 pip 安装:pip install lxml
lxml 可以⾃动修正 html 代码
6、快捷键 ctrl + shift + x 如果有的软件快捷键和这个插件冲突了 要么把这个软件关掉 要么修改这个软件的快捷键

from lxml import etree
import csv
wb_data = """
        <div>
            <ul>
                 <li class="item-0"><a href="link1.html">first item</a></li>
                 <li class="item-1"><a href="link2.html">second item</a></li>
                 <li class="item-inactive"><a href="link3.html">third item</a></li>
                 <li class="item-1"><a href="link4.html">fourth item</a></li>
                 <li class="item-0"><a href="link5.html">fifth item</a>
             </ul>
         </div>
        """
html_element = etree.HTML(wb_data)
# 获取li标签下面的href属性
links = html_element.xpath('//li/a/@href')
# print(links)
# 获取li标签下面a标签的文本内容
result = html_element.xpath('//li/a/text()')
# print(result)

# 需求是把二者的结果保存到一个字典当中然后存储的csv文件当中
# 例如 {'href':'link1.html','title':'first item'}, {'href':'link2.html','title':'second item'}...
list1 = ['href', 'title']
lst = []
for i in links:
    d = {}
    d['href'] = i
    d['title'] = result[links.index(i)]
    lst.append(d)

# 第一种方法
with open('练习.csv', 'w', encoding='utf-8', newline='')as file_obj:
    werhile = csv.DictWriter(file_obj, list1)
    werhile.writeheader()
    werhile.writerows(lst)

# 第二种方法
# with open('练习.csv', 'w', encoding='utf-8', newline='')as flie_obj:
#     werhile = csv.DictWriter(flie_obj, fieldnames=['href', 'title'])
#     werhile.writeheader()
#     werhile.writerows(lst)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python使用XPath爬取招聘信息并保存为CSV文件的步骤如下: 1. 导入所需的库: ```python import requests from lxml import etree import csv ``` 2. 发送请求获取页面内容: ```python url = "招聘信息页面的URL" response = requests.get(url) ``` 3. 解析页面内容: ```python html = etree.HTML(response.text) ``` 4. 使用XPath选取招聘信息: ```python title = html.xpath("XPath表达式1") company = html.xpath("XPath表达式2") salary = html.xpath("XPath表达式3") ``` 5. 创建CSV文件并写入表头: ```python csv_file = open('招聘信息.csv', 'w', newline='', encoding='utf-8') writer = csv.writer(csv_file) writer.writerow(['标题', '公司', '薪水']) ``` 6. 遍历招聘信息并写入CSV文件: ```python for i in range(len(title)): writer.writerow([title[i], company[i], salary[i]]) ``` 7. 关闭CSV文件: ```python csv_file.close() ``` 完整代码示例: ```python import requests from lxml import etree import csv url = "招聘信息页面的URL" response = requests.get(url) html = etree.HTML(response.text) title = html.xpath("XPath表达式1") company = html.xpath("XPath表达式2") salary = html.xpath("XPath表达式3") csv_file = open('招聘信息.csv', 'w', newline='', encoding='utf-8') writer = csv.writer(csv_file) writer.writerow(['标题', '公司', '薪水']) for i in range(len(title)): writer.writerow([title[i], company[i], salary[i]]) csv_file.close() ``` 运行这段代码后,会在当前目录下生成一个名为"招聘信息.csv"的CSV文件,其中包含了爬取到的招聘信息的标题、公司和薪水。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值