为了账号安全,请及时绑定邮箱和手机立即绑定

我用的python3.7环境,html.parser解析器无法解析,也不报错?怎么回事?

from bs4 import BeautifulSoup
import re
from urllib.parse import urlparse

class HtmlParser(object):
    def _get_new_urls(self, url, soup):
        new_urls = set()
        links = soup.find_all('a',href=re.compile(r"item/\d"))
        for link in links:
            new_url = link['href']
            new_full_url = urlparse.urljoin(url,new_url)
            new_urls.add(new_full_url)
        return new_urls

    def _get_new_data(self, url, soup):
        res_data = {}

        res_data['url'] = url

        title_node = soup.find('dd',class_="lemmaWgt-lemmaTitle-title").find('h1')
        res_data['title'] = title_node.get_text()

        summary_node = soup.find('dev',class_="lemma-summary")
        res_data['summary'] = summary_node.get_text()

        return res_data


    def parse(self, url, html_cont):
        if url is None or html_cont is None:
            return
        soup = BeautifulSoup(html_cont,'html.parser')
        new_urls = self._get_new_urls(url,soup)
        new_data = self._get_new_data(url,soup)
        return new_urls,new_data


正在回答

4 回答

links = soup.find_all('a',href=re.compile(r"item/\d"))

没有匹配到这个词条,建议修改再试

links = soup.find_all('a',href=re.compile(r"item/.{0,20}/\d+$"))


0 回复 有任何疑惑可以回复我~
python3对urllib和urllib2进行了重构,拆分成了urllib.request, urllib.response, urllib.parse, urllib.error等几个子模块,这样的架构从逻辑和结构上说更加合理。

urljoin现在对应的函数是urllib.parse.urljoin


0 回复 有任何疑惑可以回复我~
soup = BeautifulSoup(html_cont,'html.parser',from_encoding='utf-8')


0 回复 有任何疑惑可以回复我~
1. summary_node = soup.find('dev',class_="lemma-summary")应该是:summary_node = soup.find('div',class_="lemma-summary")

2.soup = BeautifulSoup(html_cont,'html_parser')


1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Python开发简单爬虫
  • 参与学习       227748    人
  • 解答问题       1218    个

本教程带您解开python爬虫这门神奇技术的面纱

进入课程

我用的python3.7环境,html.parser解析器无法解析,也不报错?怎么回事?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信