python利用beautifulSoup实现爬虫_python

以前讲过利用phantomjs做爬虫抓网页 http://www.jb51.net/article/55789.htm 是配合选择器做的

利用 beautifulSoup(文档 :http://www.crummy.com/software/BeautifulSoup/bs4/doc/)这个python模块,可以很轻松的抓取网页内容

# coding=utf-8
import urllib
from bs4 import BeautifulSoup

url ='http://www.baidu.com/s'
values ={'wd':'网球'}
encoded_param = urllib.urlencode(values)
full_url = url +'?'+ encoded_param
response = urllib.urlopen(full_url)
soup =BeautifulSoup(response)
alinks = soup.find_all('a')

上面可以抓取百度搜出来结果是网球的记录。

beautifulSoup内置了很多非常有用的方法。

几个比较好用的特性:

构造一个node元素

复制代码 代码如下:

soup = BeautifulSoup('<b class="boldest">Extremely bold</b>')
tag = soup.b
type(tag)
# <class 'bs4.element.Tag'>

属性可以使用attr拿到,结果是字典

复制代码 代码如下:

tag.attrs
# {u'class': u'boldest'}

或者直接tag.class取属性也可。

也可以自由操作属性

tag['class'] = 'verybold'
tag['id'] = 1
tag
# <blockquote class="verybold" id="1">Extremely bold</blockquote>

del tag['class']
del tag['id']
tag
# <blockquote>Extremely bold</blockquote>

tag['class']
# KeyError: 'class'
print(tag.get('class'))
# None

还可以随便操作,查找dom元素,比如下面的例子

1.构建一份文档

html_doc = """
<html><head><title>The Dormouse's story</title></head>

<p><b>The Dormouse's story</b></p>

<p>Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" id="link1">Elsie</a>,
<a href="http://example.com/lacie" id="link2">Lacie</a> and
<a href="http://example.com/tillie" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p>...</p>
"""

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)

2.各种搞

soup.head
# <head><title>The Dormouse's story</title></head>
soup.title
# <title>The Dormouse's story</title>
soup.body.b
# <b>The Dormouse's story</b>
soup.a
# <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
soup.find_all('a')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
# <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
head_tag = soup.head
head_tag
# <head><title>The Dormouse's story</title></head>

head_tag.contents
[<title>The Dormouse's story</title>]

title_tag = head_tag.contents[0]
title_tag
# <title>The Dormouse's story</title>
title_tag.contents
# [u'The Dormouse's story']
len(soup.contents)
# 1
soup.contents[0].name
# u'html'
text = title_tag.contents[0]
text.contents

for child in title_tag.children:
  print(child)
head_tag.contents
# [<title>The Dormouse's story</title>]
for child in head_tag.descendants:
  print(child)
# <title>The Dormouse's story</title>
# The Dormouse's story

len(list(soup.children))
# 1
len(list(soup.descendants))
# 25
title_tag.string
# u'The Dormouse's story'

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索爬虫
beautifulsoup
beautifulsoup爬虫、beautifulsoup4 爬虫、python beautifulsoup、利用python爬虫、beautifulsoup,以便于您获取更多的相关知识。

时间: 2024-10-22 20:51:31

python利用beautifulSoup实现爬虫_python的相关文章

python利用正则表达式提取字符串_python

前言 正则表达式的基础知识就不说了,有兴趣的可以点击这里,提取一般分两种情况,一种是提取在文本中提取单个位置的字符串,另一种是提取连续多个位置的字符串.日志分析会遇到这种情况,下面我会分别讲一下对应的方法. 一.单个位置的字符串提取 这种情况我们可以使用(.+?)这个正则表达式来提取. 举例,一个字符串"a123b",如果我们想提取ab之间的值123,可以使用findall配合正则表达式,这样会返回一个包含所以符合情况的list. 代码如下: import re str = "

简单的Python抓taobao图片爬虫_python

写了一个抓taobao图片的爬虫,全是用if,for,while写的,比较简陋,入门作品. 从网页http://mm.taobao.com/json/request_top_list.htm?type=0&page=中提取taobao模特的照片. 复制代码 代码如下: # -*- coding: cp936 -*- import urllib2 import urllib mmurl="http://mm.taobao.com/json/request_top_list.htm?type

Python利用IPython提高开发效率_python

一.IPython 简介 IPython 是一个交互式的 Python 解释器,而且它更加高效. 它和大多传统工作模式(编辑 -> 编译 -> 运行)不同的是, 它采用的工作模式是:执行 -> 探索 ,而大部分和数据分析相关的代 码都含有探索式操作(比如试误法和迭代法),所以 IPython 能大大提高编码效率. IPython 发展到现在,它不仅仅只是一个加强版的 Python shell 了, 它集成了 GUI 控制台,这可以让你直接进行绘图操作:它还有一个基于 Web 的交互式笔记

python使用BeautifulSoup分页网页中超链接的方法_python

本文实例讲述了python使用BeautifulSoup分页网页中超链接的方法.分享给大家供大家参考.具体如下: python通过BeautifulSoup分页网页中的超级链接,这段python代码输出www.jb51.net主页上所有包含了jb51的url链接 from BeautifulSoup import BeautifulSoup import urllib2 import re url = urllib2.urlopen("http://www.jb51.net") con

python使用BeautifulSoup分析网页信息的方法_python

本文实例讲述了python使用BeautifulSoup分析网页信息的方法.分享给大家供大家参考.具体如下: 这段python代码查找网页上的所有链接,分析所有的span标签,并查找class包含titletext的span的内容 复制代码 代码如下: #import the library used to query a website import urllib2 #specify the url you want to query url = "http://www.python.org&

基于Python的新浪微博数据爬虫

基于Python的新浪微博数据爬虫 周中华; 张惠然; 谢江 目前很多的社交网络研究都是采用国外的平台数据,而国内的新浪微博没有很好的接口方便研究人员采集数据进行分析.为了快速地获取到微博中的数据,开发了一款支持并行的微博数据抓取工具.该工具可以实时抓取微博中指定用户的粉丝信息.微博正文等内容;该工具利用关键字匹配技术,匹配符合规定条件的微博,并抓取相关内容;该工具支持并行抓取,可以同时抓取多个用户的信息.最后将串行微博爬虫工具和其并行版本进行对比,并使用该工具对部分微博数据作了一个关于流感问题

新闻-python利用jieba分词出现乱码问题,求指教

问题描述 python利用jieba分词出现乱码问题,求指教 用一段新闻作分词,先用正则表达式去除标点符号re.sub(r''pos_news[0])其中pos_news[0]是一段新闻.print 之后是去除标点的一段新闻.print "" "".join(jieba.cut(re.sub(r''pos_news[0])))打出来乱码:涵 閬 涓 婁簡 杩 欎 唤 鐙 壒 鐨 勭 ょ 墿 濞 绀 句 氬 悇 鐣 鍟 璧 蜂 簡 搴 鐑 堢 殑 鍙 但是如果直接pr

python实现简易采集爬虫

#!/usr/bin/python #-*-coding:utf-8-*- # 简易采集爬虫 # 1.采集Yahoo!Answers,parseData函数修改一下,可以采集任何网站 # 2.需要sqlite3或者pysqlite支持 # 3.可以在DreamHost.com空间上面运行 # 4.可以修改User-Agent冒充搜索引擎蜘蛛 # 5.可以设置暂停的时间,控制采集速度 # 6.采集Yahoo会被封IP数小时,所以这个采集用处不大 # Author: Lukin<mylukin@gm

python 利用sklearn库做了线性回归,怎么得出线性表达式的各个参数

问题描述 python 利用sklearn库做了线性回归,怎么得出线性表达式的各个参数 from skearn.linear_model import LinearRegression() x=[[6,2],[8,1],[10,0],[14,2],[18,0]] y=[[11],[8.5],[15],[18],[11]] model=LinearRegression() model.fit(x,y) #如何求y=a+bx1+cx2中的a,b,c的值 解决方案 用矩阵直接做不就得了吗,最小二乘公式