文档章节

爬虫 python社区 ,知乎日报,腾讯新闻

 阿豪boy
发布于 2017/08/30 19:15
字数 789
阅读 9
收藏 0

 python社区文章

# coding=utf-8


from bs4 import BeautifulSoup
import urllib
import urllib2
import sys
reload(sys)
sys.setdefaultencoding('utf8')
url = 'http://www.pythontab.com/html/pythonhexinbiancheng/index.html'

request = urllib2.urlopen(url)

html = request.read()

# print html

# 解析方式
soup = BeautifulSoup(html, 'html.parser')
'''
 <ul class="list lh24 f14" id="catlist">
                    <li>
                <h3>Python高级教程</h3>
                <a href="http://www.pythontab.com/html/2017/pythonhexinbiancheng_0821/1166.html" target="_blank" >
                <h2>一名数据挖掘工程师给新人整理的入门资料</h2>  </a>
                <p>四年前我一次听说数据挖掘这个词,三年前我学习了数据挖掘理论知识,两年前我做了几个与数据挖掘有关的项目,一年前我成为一名数据挖掘工程   <a href="http://www.pythontab.com/html/2017/pythonhexinbiancheng_0821/1166.html" class="content_detail" target="_blank">[详细]</a></p>
            </li>
'''

# 先通过id 找 再通过标签找,注意空格必须有

# 找到链接和标题
items = soup.select('#catlist > li > a')

# 只找到标题
titles = soup.select('#catlist > li > a > h2')

# 找超链接和标题,方便后续分割
links = soup.select('#catlist > li > a')
for i in items:
    print i.get_text()

# zip函数,titles和links是列表通过zip将两个列表下标对应的两个作为字典
'''
l1 = [1,2,3]
l2 = {'a','b','c'}
d = zip(l1,l2)

[(1, 'a'), (2, 'c'), (3, 'b')]
'''

items = []
for title, link in zip(titles, links):
    data = {
        'title': title.get_text(),  # 获取标签的文本
        'link': link.get('href')  # 获取标签的属性
    }
    items.append(data)

# 输出标题和链接
for i in items:
    print i['title'], i['link']

'''
 <div class="content">
 
'''
# 获取超链接内容
for i in items:
    request = urllib2.urlopen(i['link'])
    html = request.read().encode('utf-8')
    soup = BeautifulSoup(html, 'html.parser')
    title = i['title']
    texts = soup.select('div.content > p')
    content = []
    for t in texts:
        content.append(t.get_text().encode('utf-8'))

    with open('file/%s.html' % title, 'wb') as f:
        f.write(i['title']+'\n'+html)
       # for cont in content:
        #    f.write(cont+'\n')

 

爬取知乎日报

# coding=utf-8
import urllib
import urllib2
import urlparse
import re
import bs4
import requests

import sys

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

url = 'https://daily.zhihu.com/'


# 拿到网页源码
def getHtml(url):
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'
    }

    request = urllib2.Request(url, headers=header)
    response = urllib2.urlopen(request)
    text = response.read()
    return text


# 拿到超链接
def getUrls(html):
    # 正则表达式,提高效率re.s匹配换行符
    pattern = re.compile('<a href="/story/(.*?)"', re.S)
    items = re.findall(pattern, html)

    urls = []
    for i in items:
        urls.append('https://daily.zhihu.com/story/' + i)

        # print urls
    return urls


# 解析标题和内容
def getContent(url):
    html = getHtml(url)
    # <title>在一件事情上付出越多,你对它就越喜欢,真怪</title>
    pattern = re.compile('<title>(.*?)</title>', re.S)
    titles = re.findall(pattern, html)

    # 中文在可迭代对象中是Unicode编码,
    # print  titles[0]


    pattern = re.compile('<div class="content">(.*?)<div class="view-more">', re.S);
    content = re.findall(pattern, html)[0]

    return '<h1>'+titles[0]+'/h1' + '\n' + content

#去除不需要的标签
def clear(html):
    pattern= re.compile('<p>(.*?)</p>|<li>(.*?)</li> ')
    items = re.findall(pattern,html)
    result = []

html = getHtml(url)
urls = getUrls(html)
with open('out.html', 'w+') as f:
    f.write(getContent(urls[0]))

 

腾讯新闻

# coding=utf-8


from bs4 import BeautifulSoup
import urllib
import urllib2
import sys
import requests
import cookielib
import re

reload(sys)
sys.setdefaultencoding('utf8')

# 引入相关模块
import requests
from bs4 import BeautifulSoup

url = "http://news.qq.com/"
# 请求腾讯新闻的URL,获取其text文本
wbdata = requests.get(url).text
# 对获取到的文本进行解析
soup = BeautifulSoup(wbdata, 'lxml')
# 从解析文件中通过select选择器定位指定的元素,返回一个列表
news_titles = soup.select("div.text > em.f14 > a.linkto")

# 对返回的列表进行遍历
for n in news_titles:
    # 提取出标题和链接信息
    title = n.get_text()
    link = n.get("href")

    print('标题:%s\t链接:%s' % (title,link))

 

© 著作权归作者所有

共有 人打赏支持
粉丝 23
博文 1096
码字总数 739531
作品 0
西安
Python程序员专栏欢迎您的投稿

1、关于投稿 关注我们Python程序员知乎专栏:https://zhuanlan.zhihu.com/pythoncxy 的小伙伴已经快2w人啦,很感谢大家对我们的支持!我们专栏现在欢迎各位写Python文章的作者投稿,只要你玩...

Python爱好者社区
06/12
0
0
Python学习资料篇

Python学习资料网络上比较多,看到好的资源,不及时记录下来,下次就找不到了,我把知乎上好的回到收藏汇总到这里,以便自己随时查看,包括Python入门书籍,网站,项目,官方文档,下载资源等...

BjarneCpp
2017/12/03
0
0
给伸手党的福利:Python 新手入门引导

这是一篇 Python 入门指南,针对那些没有任何编程经验,从零开始学习 Python 的同学。不管你学习的出发点是兴趣驱动、拓展思维,还是工作需要、想要转行,都可以此文作为一个参考。 在这个信...

crossin
06/15
0
0
2个月精通Python爬虫——3大爬虫框架+6场实战+分布式爬虫,包教包会

阿里云大学在线工作坊上线,原理精讲+实操演练,让你真正掌握云计算、大数据技能。 在第一批上线的课程中,有一个Python爬虫的课程,畅销书《精通Python网络爬虫》作者韦玮,带你两个月从入门...

云木西
06/27
0
0
一个月入门Python爬虫,快速获取大规模数据

数据是创造和决策的原材料,高质量的数据都价值不菲。而利用爬虫,我们可以获取大量的价值数据,经分析可以发挥巨大的价值,比如: 豆瓣、知乎:爬取优质答案,筛选出各话题下热门内容,探索...

Python开发者
04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

内存模型是怎么解决缓存一致性的?

在再有人问你Java内存模型是什么,就把这篇文章发给他。这篇文章中,我们介绍过关于Java内容模型的来龙去脉。 我们在文章中提到过,由于CPU和主存的处理速度上存在一定差别,为了匹配这种差距...

Java填坑之路
21分钟前
1
0
vue-cli 3.0 初体验

最近复习了下vue,突然发现vue-cli已经更新到3.0版本了,并且变化蛮大,看来要不停的学习,真是一入前端深似海。 安装步骤: 1、全局安装 npm install -g @vue/cli Vue CLI 的包名称由 vue-...

tianyawhl
22分钟前
1
0
Angular进阶之路

【初级】会写页面,能出东西。 给定环境和 rest API,不用第三方库,能在十分钟内完成一个 master/detail 结构的带路由的应用(可以不管美观)。 知识点:Angular CLI、组件、路由、HTTP 服务...

陆小七的主页
25分钟前
0
0
Redis缓存数据库安全加固指导(一)

背景 在众多开源缓存技术中,Redis无疑是目前功能最为强大,应用最多的缓存技术之一,参考2018年国外数据库技术权威网站DB-Engines关于key-value数据库流行度排名,Redis暂列第一位,但是原生...

中间件小哥
25分钟前
0
0
百万级数据mysql分区

1. 什么是表分区? 表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成。 2. 表分区与分表的区别 分表...

罗文浩
28分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部