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. React:快速上手(8)——前后端分离的跨域访问与会话保持

    React:快速上手(8)——前后端分离的跨域访问与会话保持 跨域访问 跨域是指从一个域名的网页去请求另一个域名的资源.比如从http://www.baidu.com/ 页面去请求http://www ...

  2. SpringBoot学习笔记:单元测试

    SpringBoot学习笔记:单元测试 单元测试 单元测试(英语:Unit Testing)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可测试部 ...

  3. 机器学习之径向基神经网络(RBF NN)

    本文基于台大机器学习技法系列课程进行的笔记总结. 主要内容如下图所示: 首先介绍一下径向基函数网络的Hypothesis和网络的结构,然后介绍径向基神经网络学习算法,以及利用K-means进行的学习, ...

  4. 通过git命令“六步”提交新项目到码云

    通过git命令“六步”提交新项目到码云 一.初始化本地仓库 git init 二.添加文件 git add . 三.添加远程数据仓库链接 git remote add origin https://g ...

  5. [C#] - 从 HTML 代码中 转换 / 提取 可读文字(PlainText)的方法

    背景 在做网页数据分析的时候,我们关注的部分是内容,可以过滤掉HTML标签.Javascript.CSS等代码. 目标输入 <b>Hello World.</b><br/ ...

  6. 使用docker-compose搭建WordPress

    今天博主使用typecho各种不爽,索性干掉typecho,使用WordPress 依赖 mysql nginx yml 文件 version: '3' services: nginx: image: ...

  7. 表单送件按钮代码(一)cs(C#)(未完)

    protected void BtnRequest_Clich(object sender, EventArgs e) { lblMsg.Text= " " ; lblfmsg.T ...

  8. 使用docker搭建reids主从,哨兵。

    Redis主从配置,如果没有真机就要用虚拟机,使用Docke for Windows host网络有问题. 准备: 1.安装虚拟机. 2.下载redis的安装文件:http://download.re ...

  9. Bootstrap4 入门

    http://www.runoob.com/bootstrap4/bootstrap4-navs.html 共五个部分 1 <!DOCTYPE html> <html lang=&q ...

  10. vue+iview tables多个分页实现

    如果一个页面有多个分页那么可以把每个page和pageSize放到一个对象中,如下: dataList: { name: 'dataList', // 方便取到dataList对象 id: null, ...