python 爬虫相关含Scrapy框架
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框架的更多相关文章
- Python爬虫进阶之Scrapy框架安装配置
Python爬虫进阶之Scrapy框架安装配置 初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此 ...
- python爬虫入门(六) Scrapy框架之原理介绍
Scrapy框架 Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬 ...
- 零基础写python爬虫之使用Scrapy框架编写爬虫
网络爬虫,是在网上进行数据抓取的程序,使用它能够抓取特定网页的HTML数据.虽然我们利用一些库开发一个爬虫程序,但是使用框架可以大大提高效率,缩短开发时间.Scrapy是一个使用Python编写的,轻 ...
- PYTHON 爬虫笔记十一:Scrapy框架的基本使用
Scrapy框架详解及其基本使用 scrapy框架原理 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了 ...
- python爬虫学习之Scrapy框架的工作原理
一.Scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, 网 ...
- Python爬虫知识点四--scrapy框架
一.scrapy结构数据 解释: 1.名词解析: o 引擎(Scrapy Engine)o 调度器(Scheduler)o 下载器(Downloader)o 蜘蛛(Spiders)o 项目管 ...
- 芝麻HTTP:Python爬虫进阶之Scrapy框架安装配置
初级的爬虫我们利用urllib和urllib2库以及正则表达式就可以完成了,不过还有更加强大的工具,爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows 平台: 我的系统是 ...
- 【Python爬虫实战】Scrapy框架的安装 搬运工亲测有效
windows下亲测有效 http://blog.csdn.net/liuweiyuxiang/article/details/68929999这个我们只是正确操作步骤详解的搬运工
- Mac os 下 python爬虫相关的库和软件的安装
由于最近正在放暑假,所以就自己开始学习python中有关爬虫的技术,因为发现其中需要安装许多库与软件所以就在这里记录一下以避免大家在安装时遇到一些不必要的坑. 一. 相关软件的安装: 1. h ...
随机推荐
- Andrew Ng机器学习课程10补充
Andrew Ng机器学习课程10补充 VC dimension 讲到了如果通过最小化训练误差,使用一个具有d个参数的hypothesis class进行学习,为了学习好,一般需要参数d的线性关系个训 ...
- react-native 上拉加载
import React, {Component} from 'react'; import {View, ScrollView, Text, Dimensions, Image} from 'rea ...
- 客户端连接Codis集群
新建maven webapp项目 添加相关依赖: <dependency> <groupId>redis.clients</groupId> <artifac ...
- socket编程(二)
TCP下粘包问题 两种情况下会发生粘包. 1.发送端需要等缓冲区满才发送出去,造成粘包(发送数据时间间隔很短,数据了很小,会合到一起,产生粘包) 发送方:AB #其实放在缓存里没发送 发送方:B #其 ...
- ROS安装,配置
ROS最好安装在Ubuntu系统,因为ROS目前在其他的系统中都是试验性的 ! <Learning ROS for Robotics Programming-- second Edition&g ...
- 转:如何正确彻底删除webpack 全局或是局部?
原文链接:如何正确彻底删除webpack 全局或是局部? 就需要卸载cli 配置webpack ,提示需要安装 webpack-cli,选择yes 后安装webpack-cli , 可是问题不断,所以 ...
- 20191125:Python中的上下文管理机制with
20191125:with上下文管理 with是一个上下文管理器,用于执行代码块所需要的运行的时候的上下文入口和出口.上下文管理器的典型用法包括保存和还原各种全局状态,锁定和解锁资源,关闭打开的文件等 ...
- 09 IO流(六)——ByteArray字节流、流对接
字节数组流 ByteArray流是节点流. 前面讲到的文件字节流,文件字符流,他们的源都是来自于pc硬盘. 本节要讲的字节数组流的源是来自于内存或网络. 它更合适用来处理来自网络的字节流. 由于源并不 ...
- PAT(B) 1054 求平均值(Java)
题目链接:1054 求平均值 (20 point(s)) 题目描述 本题的基本要求非常简单:给定 N 个实数,计算它们的平均值.但复杂的是有些输入数据可能是非法的.一个"合法"的输 ...
- AS3动画效果常用公式
缓动公式: sprite.x += (targetX – sprite.x) * easing;//easing为缓动系数变量 sprite.y += (targetY – sprite.y) * e ...