经验:

1、利用chrome的network,通过翻页操作,快速定位到获取数据的url

2、利用Postman,可以快速生成爬虫的代码

注意点:

1、导出csv时候,中文乱码

2、抓取时间时候,格式转化

代码:

1、API类

如果网站是通过API直接获取的json数据的话,那么不用分析页面dom,比较简单

result1 = []

url = "https://ecp.sgcc.com.cn/ecp2.0/ecpwcmcore//index/noteList"

headers = {'Content-Type': "application/json", 'cache-control': "no-cache"}

for page in range(1, 11):

payload = "{\"firstPageMenuId\": \"2018032700291334\", \"index\": " + str(page) + ", \"key\": \"\", \"orgId\": \"\", \"purOrgCode\": \"\", \"purOrgStatus\": \"\", \"purType\": \"\", \"size\": 20}"

response = requests.request("POST", url, data=payload, headers=headers)

mydicts = json.loads(response.text)

for mydict in mydicts["resultValue"]["noteList"]:

publishTime = datetime.strptime(mydict["noticePublishTime"], '%Y-%m-%d')

link = "https://ecp.sgcc.com.cn/ecp2.0/portal/#/doc/doc-spec/" + str(mydict["firstPageDocId"]) + "_2018032700291334"

obj = {'title': mydict["title"], 'publishTime': publishTime.strftime("%Y-%m-%d"), 'link': link}

result1.append(obj)

print(result1)

2、URL返回网页类

有的网站是在内部嵌套了个iframe,或者异步加载数据页面,要找到真正的链接,不能单纯的用url地址

result2 = []

for page in range(1, 11):

url = "http://bulletin.sntba.com/xxfbcmses/search/bulletin.html?dates=300&categoryId=88&page=" + str(page) + "&showStatus=1"

html = urllib.urlopen(url)

bsObj = BeautifulSoup(html, "html.parser")

for tr in bsObj.find("table", {"class": "table_text"}).findAll("tr"):

if len(tr.findAll('td')) > 0:#过滤掉title

title = tr.findAll('td')[0].get_text().strip()

publishTime = datetime.strptime(tr.findAll('td')[4].get_text().strip(), '%Y-%m-%d')

link = tr.findAll('td')[0].find('a')['href'][20:-2]

obj = {'title': title, 'publishTime': publishTime.strftime("%Y-%m-%d"), 'link': link}

result2.append(obj)

print(result2)

3、导出csv

reload(sys)

sys.setdefaultencoding('utf-8')

csvFile = open('result.csv', 'wb')

#‘r’:只读(缺省。如果文件不存在,则抛出错误)

#‘w’:只写(如果文件不存在,则自动创建文件)

#‘a’:附加到文件末尾(如果文件不存在,则自动创建文件)

#‘r+’:读写(如果文件不存在,则抛出错误)

csvWriter = unicodecsv.writer(csvFile, encoding="utf-8-sig")

result = []

#中间省略爬虫代码

for o in result:

title = o['title']

publishTime = o['publishTime']

link = o['link']

csvWriter.writerow([title, publishTime, link])

csvFile.close()

4、引入

#coding=utf-8

import urllib

import requests

import json

import time #为了更像真人浏览网页,通过这个设置每几秒爬一次

import sys

import unicodecsv

from datetime import datetime

from bs4 import BeautifulSoup #美化抓取的页面

其他:

需要验证码的网站,还在研究中~~~

python爬虫实验总结_Python爬虫总结相关推荐

  1. python爬虫实验报告_python爬虫实验

    原博文 2013-06-28 13:30 − 那天在新浪微博上看到北北出的题目,由于最近也在做类似的爬虫研究,所以就有了这个实验. 后来在QQ上和北北说了下,要求是啥都抓,就抓乌云的... 然后就开始 ...

  2. python网络爬虫实验报告_Python网络爬虫实例讲解

    聊一聊Python与网络爬虫. 1.爬虫的定义 爬虫:自动抓取互联网数据的程序. 2.爬虫的主要框架 爬虫程序的主要框架如上图所示,爬虫调度端通过URL管理器获取待爬取的URL链接,若URL管理器中存 ...

  3. python爬虫开发环境_python爬虫开发教程下载|Python爬虫开发与项目实战(范传辉 著)pdf 完整版_ - 极光下载站...

    Python爬虫开发与项目实战pdf扫描版下载.Python爬虫开发是一个Pthyon编程语言与HTML基础知识引领读者入门知识,重点讲述了云计算的相关内容及其在爬虫中的应用,进而介绍如何设计自己的爬 ...

  4. python爬虫自学路线_python 爬虫学习路线:从入门到进阶

    大家好,我是凉拌 今天给大家详解一下我的爬虫学习路线. 对于小白来说,爬虫可能是一件非常复杂.技术门槛很高的事情.比如有的人则认为先要掌握网页的知识,遂开始 HTML\CSS,结果入了前端的坑,浪费了 ...

  5. python爬虫面试问题_Python爬虫面试总结

    ## Python爬虫面试总结 1. 写一个邮箱地址的正则表达式? [A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$ 2. 谈 ...

  6. python 正则表达式提取数据_Python爬虫教程-19-数据提取-正则表达式(re)

    本篇主页内容:match的基本使用,search的基本使用,findall,finditer的基本使用,匹配中文,贪婪与非贪婪模式 Python爬虫教程-19-数据提取-正则表达式(re) 正则表达式 ...

  7. python爬虫知识大全_Python爬虫入门有哪些基础知识点

    1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...

  8. python爬虫的用途_python爬虫用途

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 专业点来说就是应用多台机器同时实现爬虫任务,这多台机器上的爬虫,就是称作分布式爬 ...

  9. python爬取网页内容_Python爬虫原理解析

    笔者公众号:技术杂学铺 笔者网站:mwhitelab.com 本文将从何为爬虫.网页结构.python代码实现等方面逐步解析网络爬虫. 1. 何为爬虫 如今互联网上存储着大量的信息. 作为普通网民,我 ...

  10. python爬虫酷狗_python爬虫教程:爬取酷狗音乐,零基础小白也能爬取哦

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:python学习教程 ( 想要学习Python?Pyt ...

最新文章

  1. python 选择多个文件夹_如何同时选择多个文件?
  2. mysql 优化之 is null ,is not null 索引使用测试
  3. 中国电信陆良军:2020年5G手机终端规模达1.7亿
  4. 技术人生:希望有生之年开发一个“自己的解释语言”
  5. Linux文件系统的创建与管理(上)
  6. AspNetPager分页控件报错“对象不支持此属性或方法”
  7. ubuntu 下系统监视器_Ubuntu系统监控工具
  8. 淘宝前员工开发雨滴阅读,欲打造国产Instapaper
  9. js 复制div文本
  10. 【技术贴】Windows图片和传真查看器打开图片慢,正在生成预览的解决办法!
  11. 密码疑云 (2)——RSA加密机制需要的数学知识
  12. java web课程设计之图书管理系统
  13. c语言isfinite用法,C# Double.IsFinite()用法及代码示例
  14. uni-app 倒计时组件
  15. Linux平台PPT转图片(Python)
  16. 6-1 Person类
  17. CentOS之vim操作
  18. Linux-Ubuntu下安装python和卸载
  19. 测量小助手——典型用户及使用场景
  20. 阿里云OCR图片识别

热门文章

  1. linux wrf 系统_WRF在Linux环境下的安装
  2. 鸿蒙试炼多少可以单挑,知己知彼《灭神》单挑虚无之地大BOSS
  3. 刚装新系统环境mscorsvw.exe进程占用CPU资料50%以上的原因
  4. java网络文章博客抓取系统_java 后端博客系统文章系统——No5
  5. 一场别开生面的黑客面基大会
  6. 如何发个 微信九宫格 朋友圈?
  7. git 操作报错(fatal: ‘xxx’ does not appear to be a git repository)
  8. 天牛须和贪心算法_BAS_optimization 天牛须算法的简单编写 - 下载 - 搜珍网
  9. DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection翻译
  10. linux中运行屏幕分辨率,Linux设置显示器分辨率与刷新率