请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师这个问题研究一晚上了还是没搞定。

回答1 浏览84 2020-10-13 01:52:56

用html = str(html,encoding=‘utf-8’)时,报
’utf-8’ codec can’t decode byte 0xd0 in position 1764: invalid continuation byte
如果去掉encoding,运行不报错,但是打印不出内容。代码如下:

import re
from urllib import request

class Spider():
    url = 'http://data.eastmoney.com/bkzj/hy.html'
    root_pattern = '<tbody>[\\s\\S]*?</tbody>'

    def __fetch_content(self):
        r = request.urlopen(Spider.url)
        html = r.read()
        # print(type(html))
        html = str(html,encoding='utf-8')
        # print(html)
        return html

    def __analysis(self,html):
        root_html = re.findall(Spider.root_pattern,html)
        # print(type(root_html))
        print(root_html[1])

    def go(self):
        html = self.__fetch_content()
        self.__analysis(html)
        pass
spider = Spider()
spider.go()

添加回答

1回答

  • 不同的网站会有很多不一样的地方,不是所有网站都通用的。这个要根据具体网站的特点做调整,需要研究

    2020-10-13 13:32:11

全面系统Python3.8入门+进阶 (程序员必备第二语言)

难度初级
时长23小时
人数12181
好评度99.7%

语法精讲/配套练习+思考题/原生爬虫实战

讲师

7七月 全栈工程师

十年研发及团队管理经验,对程序员面临的各种问题深有体会;精通Python、Java、Node.js、JavaScript等语言,对Web的基础研发、高并发处理与分布式有非常深入的理解。课程讲解深入浅出,极为擅长培养学生的编程思维。

意见反馈 帮助中心 APP下载
官方微信