用Python从百度百科爬取十个页面

从百度百科爬取十个页面:

 

1. 路径管理模块:url_manager.py

  维护两个集合:待爬取的url 、 已爬取的url

  方法:

  1)向管理器中添加一个新的url

  2)向管理器中添加批量新的url

3)判断是否有新的待爬取的url

4)获取一个待爬取的url

2.  HTML下载模块:html_downloader.py

   下载页面内容

   方法:下载页面内容:

   from urllib.parse import quote

   url_ = quote(new_url, safe=string.printable) #解决请求路径中含义中文或特殊字符

   request.urlopen(url_).read().decode(“utf8”) #返回处理后的html文档

3. 页面解析模块:html_parser.py

    from bs4 import BeautifulSoup

import re

from urllib import parse

方法:

(1)获取BeautifulSoup 对象:

     soup = BeautifulSoup(html_context, "html.parser")

2)获取符合条件的待爬取网址集合

new_urls = set()

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

for link in links:

new_url = link["href"]

# 例如page_url=http://baike.baidu.com/item/Python new_url=/item/史记·2016?fr=navbar

# 则使用parse.urljoin(page_url,new_url)new_full_url = http://baike.baidu.com/item/史记·2016?fr=navbar

    new_full_url = parse.urljoin(page_url, new_url)

    new_urls.add(new_full_url)

return new_urls

(3)获取爬取出来的数据信息集合

     # <dd class="lemmaWgt-lemmaTitle-title"> <h1>Python</h1>

        red_data = {}

        red_data['url'] = page_url

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

# 获取标题内容

        red_data['title'] = title_node.get_text()

        # <div class="lemma-summary" label-module="lemmaSummary">

        summary_node = soup.find('div', class_="lemma-summary")

        red_data['summary'] = summary_node.get_text()

        return red_data

(4)写入网页显示模块: html_output.py

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值