关于爬取掘金一些错误总结

此处是json 数据

res = requests.post(url, headers=headers, json=data)   

data 和 json 数据格式如何区别

在使用requests.post()方法时,可以传入两个参数:data和json。

  • data参数:用于传递表单数据,一般是以字典形式传入。这种方式适用于常见的form表单提交。

  • json参数:用于传递JSON格式的数据,一般是以字典形式传入。这种方式适用于需要传递JSON格式的报文。

  1. JSON数据

    • 当服务器期望接收JSON格式的数据时,你应该使用json参数。

    • json参数同样接受一个字典,但它会自动将这个字典序列化为JSON格式,并设置正确的Content-Type头部(application/json)。

    • 使用json参数通常意味着你需要处理更复杂的数据结构,如嵌套的字典和列表。

    例如,如果你要发送以下JSON数据:

    {
        "name": "John",
        "age": 30,
        "city": "New York"
    }

    你可以这样使用json参数:

    import requests
    ​
    url = 'https://example.com/api'
    json_data = {
        'name': 'John',
        'age': 30,
        'city': 'New York'
    }
    ​
    response = requests.post(url, json=json_data)
  2. 表单数据(URL编码)

    • 当服务器期望接收URL编码的表单数据时(例如,一个HTML表单提交的数据),你应该使用data参数。

    • data参数同样接受一个字典,但它会自动将这个字典编码为application/x-www-form-urlencoded格式。

    例如,如果你要提交以下表单数据:

    key1=value1&key2=value2

    你可以这样使用data参数:

    import requests
    ​
    url = 'https://example.com/form'
    form_data = {'key1': 'value1', 'key2': 'value2'}
    ​
    response = requests.post(url, data=form_data)
  3. 文件上传

    • 如果你需要上传文件,应该使用files参数,而不是datajson

soup = BeautifulSoup(res.text, "lxml")   # lxml 不是 xml   开始不理解,哎,该死的🐟的记忆

lxml和 xml区别

lxmlXML 是两个不同的概念,它们在编程和数据处理中都与XML(可扩展标记语言)相关,但它们的角色和用途各不相同。

  1. XML (eXtensible Markup Language):

    • XML 是一种标记语言,设计为一种自描述的数据格式,用于存储和传输数据。它是一种通用的、跨平台的数据交换格式,广泛用于互联网数据交换、配置文件、数据存储等领域。

    • XML 数据由元素(elements)、属性(attributes)和文本(text)组成,具有树状结构,可以被多种编程语言解析和生成。

  2. lxml:

    • lxml 是一个Python库,提供了Python编程语言对XML和HTML文档的高效处理能力。

    • 它是一个第三方库,需要单独安装(通常使用pip:pip install lxml)。

    • lxml 提供了强大的API来解析和生成XML文档,支持XPath和XSLT等XML技术,并且它比Python标准库中的XML处理模块(如xml.etree.ElementTree)更快、更完整。

简而言之,XML是一种数据格式,而lxml是一个用于处理XML数据的Python库。lxml提供了对XML的高级处理能力,包括解析、生成、查询和转换XML文档。

下面是一个使用lxml解析XML文档的简单示例:

from lxml import etree
​
# 假设我们有一个XML字符串
xml_data = """
<library>
    <book>
        <title>Python Programming</title>
        <author>John Doe</author>
    </book>
    <book>
        <title>Learning XML</title>
        <author>Jane Smith</author>
    </book>
</library>
"""
​
# 解析XML字符串
root = etree.fromstring(xml_data)
​
# 遍历所有书籍元素
for book in root.findall('book'):
    title = book.find('title').text
    author = book.find('author').text
    print(f"Book: {title}, Author: {author}")

在这个示例中,lxml.etree模块被用来解析一个XML字符串,并使用XPath表达式来查找和提取书籍的标题和作者。

  • 32
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值