1、从酷狗网站爬取 新歌首发的新歌名字、播放时长、链接等

from bs4 import BeautifulSoup as BS
import requests
import re
import json
class StockCrawler(): def __init__(self):
pass def get_stockinfo(self,url):
res=requests.get(url)
res.encoding='utf-8'
soup=BS(res.text,'html.parser') stock_info=[]
div=soup.find_all('div',id='SongtabContent') #定位最外层的新歌区域标签
li=div[0].find_all('li') for i in li: #遍历每首歌的标签,分别取歌名、歌播放时长、链接
print(i) link='http:'+i.find_all('a')[0]['href']
print('link:',link) songname=i.a.find_all('span',class_='songName')[0].text
songtime=i.a.find_all('span',class_='songTime')[0].text
print('songname:',songname)
print('songtime:',songtime) stock_info.append((songname,songtime,link)) return stock_info def write_file(self,data,file_name):
with open(file_name,'w',encoding='utf-8') as fp:
for i in data:
fp.write(i[0]+','+i[1]+','+i[2]+'\n') #写入文件 if __name__=='__main__': url='http://www.kugou.com/'
stockcrawler=StockCrawler()
data=stockcrawler.get_stockinfo(url)
stockcrawler.write_file(data,'f:\\test\\pppp.txt')

2、sohu网站首页 爬取包含"体育"2个字的链接

r = requests.get("http://www.sohu.com")
r.encoding="utf-8"
html = r.text
soup = BeautifulSoup(html,"html.parser")#html可以是html内容 links = []
for i in list(soup.find_all(["a"])):
try:
print(i["href"])
if i["href"].strip().startswith(r"//"):
print(1)
i["href"]="http:"+i["href"]
if i["href"].find("javascript")>=0:
print(2)
continue
if i["href"].find("mailto")>=0:
print(3)
continue
if len(i["href"].strip())==1:
print(4)
continue
#print(i["href"])
links.append(i["href"].strip())
#print("*"*50)
except Exception as e:
print(e) for link in links:
print(link) x=1
for link in links:
r = requests.get(link)
r.encoding = "utf-8"
if "体育" in r.text:
with open("e:\\pic\\"+str(x)+".txt","w",encoding="utf-8") as fp:
fp.write(r.text)
x+=1

3、使用代理服务器 发送请求

proxy='168.0.86.146:8080'

#如果代理需要验证,只需要在前面加上用户名密码,如下所示

# proxy='username:password@124.243.226.18:8888'
proxies={
'http':'http://'+proxy,
'https':'https://'+proxy,
}
try:
response=requests.get('http://httpbin.org/get',proxies=proxies)
print(response.text)
except requests.exceptions.ConnectionError as e:
print("Error",e.args)

4、Srapy 爬虫框架

#Scrapy 爬虫框架
'''
scrapy startproject testman 1)items.py 存储你要爬取的数据的变量。
类似于字典。 2)pipelines.py(保存爬取后的数据):保存你抓取网页,分析后的存储的
变量中的数据存入到某个地方。(json文件)txt文件、excel 、数据库。 3)settings.py:设定spider的优先级,自动生成的,取消掉数据就可以了。
ITEM_PIPELINES = {'gr.pipelines.GrPipeline': 300,} gr:抓取器的名字 4)在spider的目录下,写一下分析逻辑(从网页中取想要的数据,保存到items.py声明的变量中。) 框架使用的步骤:
1 新建scrapy工程,在任意目录下,cmd中执行:scrapy startproject groad
2 生成工程的内容,在scrapy的根目录下cmd中
执行:scrapy genspider newsong www.kugou.com
3 编写相关代码
4 在scrapy的根目录下,cmd执行抓取:scrapy crawl newsong '''

5、Scrapy框架的例子,酷狗爬取新歌首发的歌曲名称、播放时长、歌曲链接等

#items.py文件内容
import scrapy class GroadItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
#定义项目的字段
songname=scrapy.Field() #歌曲名称
songtime=scrapy.Field()#歌曲播放时间
href_song=scrapy.Field()#歌曲播放链接 if __name__=='__main__':
g=GroadItem()
print(g['songname']) #pipelines.py 文件内容 import json
class GroadPipeline(object):
def __init__(self): self.filename=open('f:\\test\\newsong.txt','w',encoding='utf-8') def process_item(self, item, spider):
text=json.dumps(dict(item),ensure_ascii=False)+'\n'
self.filename.write(text)
return item def close_spider(self,spider):
self.filename.close() #settings.py文件,放开注释 ITEM_PIPELINES = {
'groad.pipelines.GroadPipeline': 300,
} #newsong.py 文件 import scrapy
from groad.items import GroadItem class NewsongSpider(scrapy.Spider):
name = 'newsong'
allowed_domains = ['www.kugou.com']
start_urls = ['http://www.kugou.com/'] def parse(self, response):
item=GroadItem()
for i in range(1,len(response.xpath('//*[@id="SongtabContent"]/ul'))+1):
for j in range(1,len(response.xpath('//*[@id="SongtabContent"]/ul[%s]/li' % i))+1):
item['songname']=response.xpath('//*[@id="SongtabContent"]/ul[%s]/li[%s]/a/span[1]/text()' % (i,j)).extract()[0]
item['songtime'] =response.xpath('//*[@id="SongtabContent"]/ul[%s]/li[%s]/a/span[@class="songTime"]/text()' % (i, j)).extract()[0]
item['href_song'] = response.xpath('//*[@id="SongtabContent"]/ul[%s]/li[%s]/a/@href' % (i, j)).extract()[0] yield item

python 爬虫相关含Scrapy框架的更多相关文章

  1. Python爬虫进阶之Scrapy框架安装配置

    Python爬虫进阶之Scrapy框架安装配置 初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此 ...

  2. python爬虫入门(六) Scrapy框架之原理介绍

    Scrapy框架 Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬 ...

  3. 零基础写python爬虫之使用Scrapy框架编写爬虫

    网络爬虫,是在网上进行数据抓取的程序,使用它能够抓取特定网页的HTML数据.虽然我们利用一些库开发一个爬虫程序,但是使用框架可以大大提高效率,缩短开发时间.Scrapy是一个使用Python编写的,轻 ...

  4. PYTHON 爬虫笔记十一:Scrapy框架的基本使用

    Scrapy框架详解及其基本使用 scrapy框架原理 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了 ...

  5. python爬虫学习之Scrapy框架的工作原理

    一.Scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, 网 ...

  6. Python爬虫知识点四--scrapy框架

    一.scrapy结构数据 解释: 1.名词解析: o 引擎(Scrapy Engine)o 调度器(Scheduler)o 下载器(Downloader)o 蜘蛛(Spiders)o 项目管 ...

  7. 芝麻HTTP:Python爬虫进阶之Scrapy框架安装配置

    初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...

  8. 【Python爬虫实战】Scrapy框架的安装 搬运工亲测有效

    windows下亲测有效 http://blog.csdn.net/liuweiyuxiang/article/details/68929999这个我们只是正确操作步骤详解的搬运工

  9. Mac os 下 python爬虫相关的库和软件的安装

      由于最近正在放暑假,所以就自己开始学习python中有关爬虫的技术,因为发现其中需要安装许多库与软件所以就在这里记录一下以避免大家在安装时遇到一些不必要的坑. 一. 相关软件的安装:   1. h ...

随机推荐

  1. web端自动化——webdriver驱动

    1.1Edge浏览器(不过,Edge浏览器只能运行于 Windows 10) Edge驱动的下载地址,复制链接http://go.microsoft.com/fwlink/?LinkId=619687 ...

  2. 解释张量及TF的一些API

    张量的定义 张量(Tensor)理论是数学的一个分支学科,在力学中有重要应用.张量这一术语起源于力学,它最初是用来表示弹性介质中各点应力状态的,后来张量理论发展成为力学和物理学的一个有力的数学工具.张 ...

  3. beego框架(golang)学习验证码

    beego框架(golang)学习验证码 登录页面使用验证码 路由设置 /beego_admin_template/routers/router.go get请求页面, post验证用户名密码和验证码 ...

  4. idea安装svn

    idea不像eclipse那样是用插件,idea是直接指向已经安装好的svn.exe.

  5. PHP比较两个版本的方法

    PHP比较两个版本的方法 写app接口经常要用到 PHP接口的版本和app里面的版本做比较 如果app版本低于接口版本 那么就要提示他升级 <pre><?php/** * 版本处理类 ...

  6. TypeScript(二)使用Webpack搭建环境

    今天继续来更新,本篇文章我们讲环境搭建,主要分享一些环境搭建的学习资源及安装步骤,解决一些安装时可能会出现的问题.下面就让我们一起进入学习第一步,搭建TypeScript环境:一. 环境搭建1.1. ...

  7. Ubuntu 中改变文件的默认打开方式(转)

     源自:Ubuntu 中改变文件的默认打开方式 1. 相关配置文件 全局配置 /etc/gnome/defaults.list /usr/share/applications/mimeinfo.cac ...

  8. IDEA设置方法注释生成模板

    1.在项目设置里面找到Editor-Live Templates(默认设置里没有这个),然后点击右边的+号,选择Template Group,创建模板组,我这里起名叫Silentdoer: 2.选中自 ...

  9. lnmp 是不是该吐吐槽

    lnmp 提供提供了便捷 , 并且手也伸的挺长的,它已不仅仅是个服务器环境那么简单 作为服务器继承环境来讲,可能每个人的认知程度不一,总之用了它需要服从它的规则 但从个人感觉上,其埋的坑还是让人不适, ...

  10. SQL Server 数据库清空ldf日志文件

    USE [master] ALTER DATABASE [DB_Develop] SET RECOVERY SIMPLE WITH NO_WAIT ALTER DATABASE [DB_Develop ...