网络爬虫

import requests                          //网络资源获取套件
res = requests.get("http://news.sina.com.cn/society/")  //获取该网址源码
res.encoding = 'utf-8'                    //以免汉字部分出现乱码
print(res.text)                        //打印HTML源码
import requests
from bs4 import BeautifulSoup                
res = requests.get("http://news.sina.com.cn/society/")
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')      //res.text表示HTML代码          parser:剖析器
print(soup.text)                       //输出过滤后的HTML代码 基本剩下文字和一些特殊代码
import requests
from bs4 import BeautifulSoup
res = requests.get("http://news.sina.com.cn/society/")
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
alink = soup.select('a')              //取出包含a标签的元素
print(alink)
print(alink[0])                              //获取  所取出a标签元素中的第一个a标签元素
print(alink.text)                //只获取 内文

//取得含有CSS属性的元素
//
取出所有class为news的a标签,class前面要加.

soup = BeautifulSoup(res.text,'html.parser')
for news in soup.select('.news'):          //冒号千万不能省略  语法易错点
  print(news)

  print(news['href'])                //获取href属性

//取出所有id为title的a标签,id前面要加#
alink = soup.select('#title')
print(alink)

 

 
import requests
from bs4 import BeautifulSoup
res = requests.get("http://news.sina.com.cn/society/")
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
for news in soup.select('.news-item'):      //news是新建的变量 表示每一块资料     冒号不能省 
    if len(news.select('h2'))>0:
        h2 = news.select('h2')[0].text    //如果没有text  会有其他代码
        a = news.select('a')[0]['href']    //[0]是为了将链表的次序解开,因为select返回的是一个列表
   print(h2,a)

 

 

h = soup.select('#header')[0].text //获取文章标题  title标签,id 为 header
//假设时间和来源处于同一个span标签里,顺序为先时间,再内嵌一个span标签,里面有来源(处于a标签的内文)

time = soup.select('.post-data')[0].contents[0].strip()//取得发布时间 span标签 clss 为post-data , contents使HTML内容序列化,从而将时间和来源分为两个部分,[0]取得时间的部分 ,strip()移除\t
//此时time是字符串类型,应该以时间格式存入数据库

source =
soup.select('.data-source' span a)[0].text      //取得来源 表示class标签data—source 下 span标签 下 a标签的内文

from datetime import datetime

dt = datetime.strptime(time,'%Y年%m月%d日%H:%M')  //字符串转时间
  
dt.strftime('%Y-%m-%d')                //时间转字符串

 

posted @ 2017-10-10 21:09  萌新上路  阅读(96)  评论(0编辑  收藏  举报