写爬虫程序应该注意的问题

我们知道,网络爬虫是一种按照一定的规则,自动地抓取网站信息的程序或者脚本。那么,我们怎么通过网络爬虫获取所需要的网站信息呢?
不同的网站有不同的规则,爬虫工程师根据这些规则设计不同的网络爬虫,以此来顺利获取所需要的信息。
一、开放API的网站
一个网如果开放了API,那么就可以直接GET到它的json数据。有三种方法可以判断一个网站是否开放了API。
1、在站内寻找API入口;
2、用搜索引擎搜索“某网站API”;
3、抓包,有的网站虽然用到了ajax,但是通过抓包还是能够获取XHR里的json数据的(可用抓包工具抓包,也可以通过浏览器按F12抓包:F12-Network-F5刷新)。
二、不开放API的网站
1、如果网站是静态页面,那么可以用requests库发送请求,再通过HTML解析库(lxml、parsel等)来解析响应的text;解析库强烈推荐parsel,不仅语法和css选择器类似,而且速度也挺快,Scrapy用的就是它。
2、如果网站是动态页面,可以先用selenium来渲染JS,再用HTML解析库来解析driver的page_source。
三、反爬虫网站
很多网站都具有反爬虫策略,常见的有:验证码、登陆、限制IP等。
1、验证码。可以利用打码平台破解(如果硬上的话用opencv或keras训练图);
2、登陆。利用requests的post或者selenium模拟用户进行模拟登陆;
3、限制IP。购买亿牛云代理IP(免费IP效果非常差,不建议使用)。

原文地址:https://blog.51cto.com/14400115/2419038

时间: 2024-10-04 07:28:25

写爬虫程序应该注意的问题的相关文章

用Java写的爬虫程序

这是一个web查找的根本程序,从命令行输入查找条件(开端的URL.处置url的最大数.要查找的字符串), 它就会逐一对Internet上的URL进行实时查找,查找并输出匹配查找条件的页面. 这个程序的原型来自<java编程艺术>, 为了非常好的剖析,站长去掉了其间的GUI有些,并稍作修改以适用jdk1.5.以这个程序为基础,可以写出在互联网上查找 比如图像.邮件.页面下载之类的"爬虫". 先请看程序运转的进程: D:\java>javac  SearchCrawler

Python写的网络爬虫程序(很简单)

Python写的网络爬虫程序(很简单) 这是我的一位同学传给我的一个小的网页爬虫程序,觉得挺有意思的,和大家分享一下.不过有一点需要注意,要用python2.3,如果用python3.4会有些问题出现. python程序如下: import re,urllib strTxt="" x=1 ff=open("wangzhi.txt","r") for line in ff.readlines(): f=open(str(x)+".txt&

网络爬虫作业代码代写代实现、代做爬虫程序

网络爬虫作业代码代写代实现.代做爬虫程序任务二.网络爬虫实现 一.任务描述编写大学排名爬虫程序,从"最好大学网"获取"软科中国最好大学排名"2016.2017.2018年的国内大学排名数据,并将它们输出出来.2016年中国最好大学排名网址目的1.学习运用requests库编写基本URL访问过程2.学习运用beautifulsoup4库解析和处理HTML3.掌握编写网络爬虫的基本方法二.任务分析(必须有,主要分析任务需求,完成任务的思路与方法,采用的技术等,如爬虫的任

第一次写爬虫 , 程序一直运行不终止

 之所以陷入不终止状态        是由于正则表达式出错  正则表达式引擎一直处于回溯状态  (回溯结束,程序可能终止,没去尝试)  当一个正则表达式占用浏览器上秒,上分钟或者更长时间时,问题原因很可能是回溯失控. 这个例子告诉我们,在写爬虫时,如果数据过多,   正则表达式一定要不能出错. 原文地址:https://www.cnblogs.com/xiaohaodeboke/p/11781225.html

我的第一个python爬虫程序(从百度贴吧自动下载图片)

这个学期开设了编译原理和形式语言与自动机,里面都有介绍过正则表达式,今天自己学了学用python正则表达式写爬虫 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址, 然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止. 如果把整个互联网当成

自娱自乐写爬虫 世纪佳缘篇

最近一段时间不知怎得像是中了什么魔怔,特别的想用python写一个网络爬虫,也许是看了知乎上的某位大牛的分享,深感能自己写一个程序在浩瀚的互联网数据海洋中发现有意思的数据的酷炫,抑或就是想单纯的体验一把程序猿的人生价值.在当我信誓旦旦的决定用一到两周准备实现这个宏伟的理想的时候,我马上就遇到了瓶颈,而且是必须快速解决的要给难题:我应该在互联网上爬点什么数据呢? 经过一番深入的考察,我发现婚恋网站是一个理想的目标,因为在博客园里面还从来没有看到过相关的帖子(其实博客园里面大部分帖子感觉挺水的),而

使用PHP创建基本的爬虫程序【转】

Web Crawler, 也时也称scrapers,即网络爬虫,用于自动搜索internet并从中提取 想要的内容.互联网的发展离不开它们.爬虫是搜索引擎的核心,通过智能算法发现符合 你输入的关键字的网页. Google网络爬虫会进入你的域名,然后扫描你网站的所有网页,从中析取网页标题,描述, 关键字和链接 - 然后把这些的评价返回给Google HQ,把内容存放至海量的数据库中. 今天,我很高兴告诉你怎么做自己的爬虫 -- 它并不对整个互联网进行搜索,只是对指定的 一个网址获取所有链接和信息[

医学教育网爬虫程序(直播)

12-18 今晚接到老姐的电话,说她已在"医学教育网"订购了不少视频,要我帮她将所有的视频都下载下来.我看了一下,里面有24门科目,每门科目有40多节.要我手动一个一个下,还不如让我去死.这种重复的事情还是让程序来做吧!这里开一篇博客直播编写的过程. 被爬网址:http://www.med66.com/ 前几天我刚做完一个Qihuiwang的爬虫软件.这次我评估了一下,这次要做的视频下载爬虫程序比上次又有新的挑战: (1)要处理登陆的过程,上一个不需要登陆就可以直接爬.这次必须要登陆才

python网络爬虫 - 如何伪装逃过反爬虫程序

有的时候,我们本来写得好好的爬虫代码,之前还运行得Ok, 一下子突然报错了. 报错信息如下: Http 800 Internal internet error 这是因为你的对象网站设置了反爬虫程序,如果用现有的爬虫代码,会被拒绝. 之前正常的爬虫代码如下: from urllib.request import urlopen ... html = urlopen(scrapeUrl) bsObj = BeautifulSoup(html.read(), "html.parser") 这