Python 网页解析之Beautifulsoup

本文分享了使用Python的BeautifulSoup库进行网页解析的实际经验,对比了与Jsoup的不同,详细介绍了如何利用css选择器进行数据抓取,以及解决中文乱码问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前都是用Jsoup 做网页解析,最近用Django+Python 设计实现一套信息采集系统,解析器选择了和jsoup 相近的 beautifulsoup

用下来两个解析器除了名字相近 都支持 css selecter   解决问题思路完全不同,再加上java 和Python 的语言差别

需要仔细研究

先看demo

#!/usr/bin/python
# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup


def parse_list(trinfo):
    # psoup = BeautifulSoup(trinfo, "xml")  # 指定文档解析器
    print trinfo.select_one('span').get_text().strip()
    print trinfo.select('span').


doc = open('C:/Users/Administrator/Desktop/table.html', 'r')
# print doc.read()
soup = BeautifulSoup(doc.read(), "xml")  # 指定文档解析器

info = soup.select('table#table1 > tr')

for m in range(len(info)):
    # print type(info[m])
    parse_list(info[m])

这样解析中文会出现乱码,发现python 编码真是个问题

要点:

1.如果不指定文档解析器(python 自带、lxml 、html5)

beautifulsoup 会报错,同时也会自动选择一个最好的解析器

2.使用css 选择器,结果是一个列表,循环遍历 的是一个tag  beautifulsoup 里的对象,并非是字符串

所以可以接着解析

3.文档乱码在文件读取的时候便发生了 ,读取文章的时候 可以设置编码

# -*- coding: UTF-8 -*-
import codecs
doc = codecs.open('C:/Users/Administrator/Desktop/table.html', 'r+', 'GBK')

s = doc.readlines()
doc.close()
for line in s:
    print line


待续....


转载于:https://my.oschina.net/PagodaTree/blog/667200

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值