提取网页所有列表的文章标题

import pycurl,StringIO,json,time,re,sys,urllib2
from lxml import etree

# headers = {
#     "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
#     "Accept-Encoding":"gzip, deflate, sdch",
#     "Accept-Language":"zh-CN,zh;q=0.8",
#     "Cache-Control":"max-age=0",
#     "Connection":"keep-alive",
#     "Cookie":"Hm_lvt_fa633287999535c3e5f5a63e82308549=1462868485; Hm_lpvt_fa633287999535c3e5f5a63e82308549=1462868485; CNZZDATA5838747=cnzz_eid%3D1693591872-1459152412-http%253A%252F%252Fwww.1396app.com%252F%26ntime%3D1462865237",
#     "Host":"www.1396app.com",
#     "Upgrade-Insecure-Requests":"1",
#     "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
# }

reload(sys)
sys.setdefaultencoding(‘utf-8‘)

def gethtml(url,headers):
    c = pycurl.Curl()    #通过curl方法构造一个对象
    #c.setopt(pycurl.REFERER, ‘http://qy.m.58.com/‘)    #设置referer
    c.setopt(pycurl.FOLLOWLOCATION, True)    #自动进行跳转抓取
    c.setopt(pycurl.MAXREDIRS,5)            #设置最多跳转多少次
    c.setopt(pycurl.CONNECTTIMEOUT, 60)        #设置链接超时
    c.setopt(pycurl.TIMEOUT,120)            #下载超时
    c.setopt(pycurl.ENCODING, ‘gzip,deflate‘)    #处理gzip内容,有些傻逼网站,就算你给的请求没有gzip,它还是会返回一个gzip压缩后的网页
    # c.setopt(c.PROXY,ip)    # 代理
    c.fp = StringIO.StringIO()
    c.setopt(pycurl.URL, url)    #设置要访问的URL
    # c.setopt(pycurl.HTTPHEADER,headers)        #传入请求头
    c.setopt(c.WRITEFUNCTION, c.fp.write)    #回调写入字符串缓存
    c.perform()        

    code = c.getinfo(c.HTTP_CODE)    #返回状态码
    html = c.fp.getvalue()    #返回源代码

    return code

write_key = open(‘key.txt‘,‘a+‘)

for list_url in range(0,441):
    url = ‘http://www.icaile.com/tag/gl-45-%s.html‘ % list_urlfor key in re.findall(r‘title="(.*?)"‘,gethtml(url)):
        key = key.decode(‘utf-8‘,‘ignore‘)
        write_key.write(key+‘\n‘)
        print key

headers 加不加都可以,建议是加一个吧,最后这段用re.findall提取 title="" 的内容也是技术不到位

用xpath会比较精准。。。仅用于记录

    url_range = etree.HTML(gethtml(url).decode(‘utf-8‘,‘ignore‘))
    dateil_url = url_range.xpath(‘/html/body/div[3]/div[3]/div[1]/div[1]/div/ul/li[1]/a‘)[0].text
    print dateil

写得比较粗,没有去重

关于对SEO能有什么用处,我感觉抓关键词比较爽。。。再改改就当火车头使了,效率比火车高很多,写个多线程的话(据说Pycurl也是带多线程的)

时间: 2024-10-13 16:13:12

提取网页所有列表的文章标题的相关文章

asp.net正则表达式提取网页网址、标题、图片实例以及过滤所有HTML标签实例

无论你用什么语言,正则表达式的处理方法都是非常灵活.高效的,尤其是对某些字符串的抓取.过滤方面,更显其优势. 正则表达式的写法通常比较简单,几行短代码便能轻松完成看似很复杂的事情,更值得称赞的是,它的执行效率非常高,运行速度相当快.因此我在项目的开发中,通常把正则表达式作为处理问题的首选方法. 正则表达式的运用,在各种语言里都是相通的,也就是说,当你懂得在PHP中使用正则表达式,那么在任何一种语言中也能轻驾就熟. 这里给出两个asp.net实例. 1.asp.net正则表达式提取网址.标题.图片

从网页中通过正则表达式获取标题等信息(二)实现过程分析

上篇文章,介绍了我2012年实现的一个内容聚合网站,通过正则表达式抽取网页内容,并提供了代码实现. 从网页中通过正则表达式获取标题.URL和发表时间 本文将进一步介绍其实现过程: (1)网页结构分析 在2012年左右,JavaScript还远没有今天这么强大,当时html是网页的骨架,css进行风格装饰,javascript提供动作. [注]在当今动辄 React.Angular.Vue之类技术做前端,前端一栈式开发的背景下,内容抽取也许大不一样. 从网页页面上抽取内容,需要分析其html结构.

css代码完成文章标题的美化

如果你打开浏览器的控制面板,随便输入一个JS内置的构造器函数,比如Array,控制台输出的是一个名为Array的函数体,这好像并没有什么稀奇的,但是,当你接着输入Array.prototype,控制面板输出了一堆我们经常用到的Array构造器的方法,把目光转移到最下方,有一个叫__proto__的属性,好奇的点开 集成测试经常涉及到应用基础设施,如数据库,文件系统,网络资源或网页的请求和响应.单元测试用伪造或模拟对象代替这些问题,但集成测试的目的是为了确认该系统与这些系统的预期运行一致. htt

利用htmlparser提取网页纯文本的例子

import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; importorg.htmlparser.filters.TagNameFilter; import org.htmlparser.tags.TableTag; import org.htmlparser.util.NodeList; /** * 标题:利用htmlparser提取网页纯文本的例子 */ publi

解决国外模板h1、h2、h3...不显示中文文章标题的问题

如果你经常用国外好看的网页模版时候,会遇到不显示中文文章标题的情况,显示英文标题却正常.遇到这个情况很多人认为应该修改CSS的font-family的字体,其实这是错误的,与CSS无关. 出现这种情况的真正的原因是因为国外主题开发者喜欢使用Cufon字体,所谓Cufon字体是JS的一种特效,它的作用是将文字以图片的形式显现出来.这是为了解决主题设计者想展示的字体,而浏览器却不支持这种字体的矛盾.比如主题设计者想使用Trebuchet MS这种字体,使模板看起来好看又另类,可是浏览器不支持这种字体

如何使用css和jquery控制文章标题字数?

如何使用css控制文章标题字数? 最佳答案 控制文章标题字数,不是动态网页的专利,如果静态页面使用CSS样式,也可以实现相同的效果! 看这个例子,你们可以复制到记事本保存为HTML文件看效果! <html> <title>css控制字数</title> <head> <style type="text/css"> .dd { border: solid 1px gray; width:180px; overflow: hidd

设置帝国cms文章标题 真正符合百度建站标准

百度建站指南中有提到内容页的标题设置,标题描述清晰最好包含主站和频道信息:内容标题_频道名称_网站名称.帝国cms文章标题一般默认是内容标题_网站名称,那么如何调用当前文章的频道名称(分类名称)呢? 帝国cms已经集成了面包屑导航功能,调用方法是在需要的地方添加标签[!--newsnav--],原本想着直接放到<title></title>,但是重新生成页面之后,查看一下源代码,发现标题变成了:<title>****_<a href="/"&g

修改DEDECMS文章标题长度,解决DEDECMS文章标题显示不全

在用dede调用列表标题出来的时候,会发现标题文字字数显示不完全,那是因为dede默认标题出来长度是30个字符,为了让标题显示完整,要做以下修改! 1.进入后台–系统–系统设置–系统基本参数–其他选项–文档标题最大程度改为你要的长度原默认是60(这里改为了200) 2.登陆数据库,改数据库表dede_archives表里面的title字段,原默认是60,(这里改为200). 1 ALTER TABLE `dede_archives` CHANGE `title` `title` VARCHAR(

用weexplus从0到1写一个app(2)-页面跳转和文章列表及文章详情的编写

说明 结束连续几天的加班,最近的项目终于告一段落,今天抽点时间开始继续写我这篇拖了很久的<用weexplus从0到1写一个app>系列文章.写这篇文章的时候,weexplus的作者已经把weexplus重构了一下,可以同时打包出web端和native端,我这边的ui界面和项目结构也跟着做了一点变化.这里有weexplus官方放出的一个电影APP的demo,有需要的可以去下载看看,然后顺便给weexplus一个star吧! 文章可能会很长,在此分几篇文章来写,先占个坑: 用weexplus从0到