您的位置:首页 > 编程语言 > Python开发

【Python3.6爬虫学习记录】(二)使用BeautifulSoup爬取简单静态网页文章

2017-08-12 20:38 1076 查看
前言:自学第二天,大致搞懂,要学什么,要怎么学的问题。

与我而言,主要是针对一些库来循序渐进:requests(urllib)->BeautifulSoup(re,xpath)->selenium(PhantomJS)->scrapy

某乎看到的最好的答案:



如何入门Python爬虫?-知乎

BeautifulSoup的安装:

命令提示符程序下输入:

pip install beautifulsoup4


lxml的安装:

安装没有想象的那么简单,直接如下安装会出现错误

pip install lxml


正确的姿态是这样的:

1,安装wheel,命令行运行:

pip install wheel


2,检查pip支持的版本,IDE中运行:

import pip
print(pip.pep425tags.get_supported())




3, 在这里下载对应的.whl文件,注意别改文件名!



4,进入.whl所在的文件夹(建议直接放在命令行程序最开始出现的文件夹,本人是:C:\Users\lenovo>),执行命令即可完成安装pip install 带后缀的完整文件名(本人是:lxml-3.8.0-cp36-cp36m-win32.whl)

pip install lxml-3.8.0-cp36-cp36m-win32.whl


爬虫实践:

一,BeautifulSoup的使用

详细教程点这里,

不用全部看,只用大致了解,用到的时候再查。我照着打了一部分:

print(soup.prettify()) # 格式化输出网址源码

# 打印title,用soup加标签名轻松获得标签内容,而不需要用正则表达式
print(soup.title)
print(soup.head)
print(soup.p)  #只打印第一个p的部分
print(soup.div.attrs) # 打印div标签的所有属性,得到的类型是一个字典
print(soup.div['class']) # 但单独打印div的某一个部分
print(soup.title.string)  # .string获得标签内部的文字

# 遍历文档树
# 直接子节点 .contents  .children
print('直接子节点')
for child in soup.body.children :
print(child)
# 用来遍历
# 所有子孙节点 .descendans   包括其内部所有内容
print('所有子孙节点')
for child in soup.body.descendants:
print(child)
# 所有父节点 .parents
# 所有兄弟节点 .next_siblings   .previous_siblings
# 所有前后节点 .next_elements  .previous_elements

# 节点内容 .string (s)s

# 搜索文档树
# 注意:如果一个指定名字的参数不是搜索内置的参数名,
# 搜索时会把该参数当作指定名字tag的属性来搜索,
# 如果包含一个名字为 id 的参数,Beautiful Soup会搜索每个tag的”id”属性


二,实践代码-抓取简书文章

# 爬虫利器-BeautifulSoup--抓取简书文章
# 首先导入bs4库
from bs4 import BeautifulSoup
import requests

url = 'http://www.jianshu.com/p/82833d443e76'
# 获得网址源码
html = requests.get(url).content
soup = BeautifulSoup(html, 'lxml')

print('开始抓取')
title = soup.title.string
with open(title+'.txt', 'w') as f:
href = soup.find_all('p')
try:
f.write('\t%s\r\n' %str(title)) #前面%s 后面之间空格加%内容
for hre in href:
if(hre.string!=None):       #未解决标签内容回车后打印none问题
f.write('\t%s\r\n' %str(hre.string))
except Exception:
print('发生错误')
print('抓取成功')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 爬虫
相关文章推荐