素闻BeautifulSoup提取效率低,艾玛,第一印象果然是很要命的,反正比Re 和 Lxml 是要慢的,不过就无奈Re的正则折腾来折腾去,没写出来,Lxml 的 Xpath 又用得不好。

不过就这三个模版来看,BeautifulSoup的表现还是不错的,够简单,顺便测试了一下时间,抓10个列表页花不了1分钟,当然我是菜鸟,没事不会纠结终结速度。

核心就是这部分,用 Find_all 和 Find 都搞了半天不成功,最后用CSS提取搞定,也怪我太着急。

用Find比较麻烦,一层层的Class找,多次索引效率肯定不能保证

用Urllib2 或者 Pycurl 抓都可以

key_list = open('title.txt','a+')
for page in xrange(0,101):  #要抓的列表数量
url = 'http://www.xxx.net/wangwen/list_205_%s.html' % page
soup = bs(gethtml(url,headers),"lxml")
for i in soup.select('.thread_list a'):  #这句是核心,CSS组合查找,找到.thread_list 下的 a 标签
i = i.text.encode('utf-8')  #提取a标签内的文笔内容,也就是锚文本 <a href="http://aaa.com">我是锚文本</a> 此时代码编译为utf-8
key_list.write(i + '\n')
print i,ctime()  #装B的写了ctime看时间,其实没啥米鸟用
time.sleep(3) key_list.close()
import pycurl,StringIO,json,time,re,sys
from time import ctime
from lxml import etree
from bs4 import BeautifulSoup as bs reload(sys)
sys.setdefaultencoding('utf-8')  #设定系统默认编码,Windows设置gbk呗,没这句容易出错

BeautifulSoup抓取列表页锚文本的更多相关文章

  1. python实现一个栏目的分页抓取列表页抓取

    python实现一个栏目的分页抓取列表页抓取 #!/usr/bin/env python # coding=utf-8 import requests from bs4 import Beautifu ...

  2. 控制台js常用解决方案,字符串替换和抓取列表页链接

    抓取列表页链接 由于测试站没有jquery所以,我用了原生的js var obj = document.getElementsByClassName('class1'); for(let i = 0; ...

  3. 利用BeautifulSoup抓取新浪网页新闻的内容

    第一次写的小爬虫,python确实功能很强大,二十来行的代码抓取内容并存储为一个txt文本 直接上代码 #coding = 'utf-8' import requests from bs4 impor ...

  4. 使用selenium+BeautifulSoup 抓取京东商城手机信息

    1.准备工作: chromedriver  传送门:国内:http://npm.taobao.org/mirrors/chromedriver/   vpn: selenium BeautifulSo ...

  5. python3用BeautifulSoup抓取id='xiaodeng',且正则包含‘elsie’的标签

    # -*- coding:utf-8 -*- #python 2.7 #XiaoDeng #http://tieba.baidu.com/p/2460150866 #使用多个指定名字的参数可以同时过滤 ...

  6. python3用BeautifulSoup抓取a标签

    # -*- coding:utf-8 -*- #python 2.7 #XiaoDeng #http://tieba.baidu.com/p/2460150866 from bs4 import Be ...

  7. 一、使用 BeautifulSoup抓取网页信息信息

    一.解析网页信息 from bs4 import BeautifulSoup with open('C:/Users/michael/Desktop/Plan-for-combating-master ...

  8. python3用BeautifulSoup抓取div标签

    # -*- coding:utf-8 -*- #python 2.7 #XiaoDeng #http://tieba.baidu.com/p/2460150866 #标签操作 from bs4 imp ...

  9. 爬虫初体验:Python+Requests+BeautifulSoup抓取广播剧

    可以看到一个DIV下放一个广播剧的信息,包括名称和地址,第一步我们先收集所有广播剧的收听地址: # 用requests的get方法访问novel_list_resp = requests.get(&q ...

随机推荐

  1. nginx反射理传apache配置 - cookie去哪儿了?

    在公司接手了个微信项目,由于微信环境下访问网站需要使用对外开放的域名,所以有相关问题,都是直接运维同事帮忙处理. 原理是这样: 方案一: 1. 将域名解析指向测试服务器的地址: 2. 开放相关端口访问 ...

  2. Linux下安装zookeeper集群

    首先,准备三台Linux虚拟机 三台机器 centos01 :192.168.1.168(lxs001)   centos03 :192.168.1.178(lxs003)   centos03 :1 ...

  3. iOS中级篇 - dispatch_semaphore(信号量)的理解及使用

    理解这个概念之前,先抛出一个问题 问题描述: 假设现在系统有两个空闲资源可以被利用,但同一时间却有三个线程要进行访问,这种情况下,该如何处理呢? 没错,这里,我们就可以方便的利用信号量来解决这个问题. ...

  4. Netty 5.0源码分析-ByteBuf

    1. 概念 Java NIO API自带的缓冲区类功能相当有限,没有经过优化,使用JDK的ByteBuffer操作更复杂.故而Netty的作者Trustin Lee为了实现高效率的网络传输,重新造轮子 ...

  5. 第9章 创建Web数据库

    1.登录MySQL: mysql -h hostname -u username -p password *-h 用于指定所希望连接的主机,即运行MySQL服务器的机器: -u 用于指定连接数据库时使 ...

  6. Java学习笔记-Thread-线程

    //2015年5月5日16:55:00 //Main package com.alfredsun.thread; public class Main { public static void main ...

  7. JDK安装(CentOS/rpm方式)

    1. 用如下命令检验是否已经自带了OpenJDK java -version 如果打印如下,则表示安装了OpenJDK java version "1.6.0" OpenJDK R ...

  8. 多微博账号同时发微博的插件--fawave

    我们每个人应该都不止一个博客或者微博,尤其是明星.为了考虑与新闻社区媒体的关系,必须在每个平台都要入住一下才好,还有一方面也是对粉丝的一种关爱吧.反正里面关系很复杂.有没有一个工具可以讲微博的内容同步 ...

  9. 转载:c# string.Format

    C#:STRING.FORMAT数字格式化输出 1.各种常用数字格式化 货币转换 C 或 c(默认小数点后2位.C3后面跟的数字就代表小数后几位)    string.Format("{0: ...

  10. C++内存池

    内存池是一种内存分配方式.通常我们习惯直接使用new.malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片.并由于频繁的分配和回收内存会降低 ...