系统环境:
操作系统:Windows8.1专业版 64bit
Python:anaconda、Python2.7
Python packages:requests、beautifulsoup
Background:
在使用Python进行爬虫开发时,我们经常需要爬取一些HTML页面的内容。
解决方法:
在编程实现之前,需要按照以上的系统环境,配置好自己Python环境,同时安装好requests、beautifulsoup这两个Python packages。
# -*- coding: utf-8 -*-
"""
Created on Sun Apr 22 09:18:25 2018
@author: gmn
"""
'Python实现爬取HTML页面内容'
#导入requests包
import requests
#BeautifulSoup用于页面解析
from bs4 import BeautifulSoup
#requests get请求
#requests.get里面返回的就是纯网页文件,下面需要进一步的解析
req=requests.get('http://finance.eastmoney.com/news/cywjh.html') #东方财富网
#页面数据结构化
bs=BeautifulSoup(req.content,'html.parser')
# =============================================================================
# 页面解析
# =============================================================================
#获取类标签为title的所有p段落,即为该页面的新闻报道的标题
#对于为什么是选择class='title'的段落,这个需要通过浏览器的开发工具来查看具体的HTML源代码。
p_title=bs.find_all('p',attrs={'class':'title'})
#print p_title[0]
#循环获取该页面的所有新闻标题
for info in p_title:
#获取p标签里面的a标签的url
url=info.a.get('href')
#print url
#详细页面get请求
req=requests.get(url)
#页面数据结构化
bs1=BeautifulSoup(req.content,'html.parser')
# =============================================================================
# 笔记:
# find()方法为找到第一个符合条件的对象
# find_all()方法为找到所有符合条件的对象
# =============================================================================
#详细页面解析
title=bs1.find('h1').text #找到第一个h1标签
p_all=bs1.find_all('p') #找到所有的p标签
#print该篇新闻的题目
print title
for p in p_all:
#循环print该篇新闻的所有段落内容
print p.text
print '-------------------------------------'