python-基于bs4的聚焦爬虫学习

    学习了基于bs4聚焦爬虫:bs4比较局限只能是python使用。个人感觉不是很好使用。

   bs4数据解析原理:1、实例化一个beautifulSoup对象,并且将页面源码加载到该对象中
           2、通过beautifulSoup对象中的相关属性或者方法进行标签定位和数据提取

  下面是我的测试代码和BeautifulSoup对象的一些常用方法。

    

if __name__ == '__main__':
    fp = open('./guge.html', 'r', encoding='utf-8')
    soup = BeautifulSoup(fp, 'lxml')
    # 第一次所出现的标签 soup.tagname  soup.a相当于soup.find('a')
    # print(soup.a)
    # soup.find('a', class_='song')的属性定位

    # soup.findAll()返回值是一个列表,里面的内容是所有要查找的所有标签
    # print(soup.findAll('a'))

    # soup.select('某种选择器id,class等') 选择器 返回值是一个列表
    # soup.select也可以用于层级定位 >表示一个层级 空格表示多个层级
    # print(soup.select('ul > li > a'))
    # print(soup.select('ul a'))

    # 获取标签内容.text/get_text() 获取一个标签下的所有内容,string 该标签下的内容
    # print(soup.find('ul').string)

    # 标签中的属性值
    # print(soup.a['href'])

  这是我做的一个基于bs4爬取三国演义小说:

  

# 爬取三国演义所有的标题和章节内容
import requests
from bs4 import BeautifulSoup
if __name__ == '__main__':
    url = 'https://www.shicimingju.com/book/sanguoyanyi.html'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0'
    }
    resp = requests.get(url=url,headers=headers)
    resp.encoding = 'utf-8'
    nameobj = resp.text
    soup = BeautifulSoup(nameobj,'lxml')
    # print(soup.select('.book-mulu a'))
    # 选出来的所有a标签列表
    zhang_lable = soup.select('.book-mulu a')
    # print(zhang_lable)

    fp = open('D:StudyPythonscrapysanguo.html','w',encoding='utf-8')
    for i in zhang_lable:
        # 获取章节名
        name = i.text
        # 获取章节内容地址
        url_href = 'https://www.shicimingju.com'+i['href']
        resp1 = requests.get(url=url_href,headers=headers)
        resp1.encoding = 'utf-8'
        text = resp1.text
        soup_neirong = BeautifulSoup(text,'lxml')
        # print(soup_neirong.find('div',class_='chapter_content').get_text())
        neirong = soup_neirong.find('div',class_='chapter_content').get_text()
        fp.write(name+':'+neirong+'
')
        print(name+'爬取成功!')
    fp.close()
    print('三国演义爬取完成')

 


  

原文地址:https://www.cnblogs.com/moxihuishou/p/13954593.html