用Python写了个简单小爬虫

 1 #coding: utf-8
 2
 3 import requests,urllib2,urlparse,time,sys
 4 from bs4 import BeautifulSoup
 5
 6 #获取百度url wd查询关键子 pn第几页  rn 每页多少条 最大50条
 7 #getbaidu.py 关键字 爬取页数 每页数量
 8 #getbaidu.py example 10 50
 9 #百度特性 每页显示条数为10 20 30类型的整数
10
11
12 type = sys.getfilesystemencoding()
13
14 def geturl(wd,pn,rn):
15     #geturl(关键字,爬取页数,单页显示数量)
16
17     #配置
18     target = ‘http://www.baidu.com/s‘
19     i = pn #记录页数
20     pn = pn*rn-1 #显示至当前页最后一个标题
21     url = target+‘?wd=‘+wd+‘&pn=‘+str(pn)+‘&rn=‘+str(rn)
22
23     #获取页面主体并分析
24     body = getbody(url)
25     soup = BeautifulSoup(body,‘html.parser‘)
26
27     #分析
28     tags = soup.find_all(‘a‘,attrs={‘class‘:‘c-showurl‘})
29     links = []
30     for tag in tags:
31         href = tag.attrs[‘href‘]
32         #打印跳转后的url
33         #print urlparse.urlparse(requests.head(href).headers[‘Location‘]).netloc
34         href = requests.head(href).headers[‘Location‘]
35         links.append(href)
36         print href
37
38     #判断最终页
39     if int(i) == 1:
40         print ‘\r--------     Web spider is end     -------\r‘
41
42     else:
43         print ‘\n#############     Next page,sleep 1 sencound    ##################            ‘+str(i)+‘   \n‘
44         time.sleep(1)
45         geturl(wd,int(i)-1,rn)
46
47
48 def getbody(url):
49     request = urllib2.Request(url)
50     response = urllib2.urlopen(request)
51     return response.read()
52
53 if __name__ == ‘__main__‘:
54     key = str(sys.argv[1])
55     page_num = int(sys.argv[2])
56     show_num = int(sys.argv[3])
57     geturl(key,page_num,show_num)

配合着sqlmap api一起用,批量检测sql注入应该会很棒~

时间: 2024-10-26 18:19:31

用Python写了个简单小爬虫的相关文章

python写的的简单的爬虫小程序

import re import urllib def getHtml(url): page=urllib.urlopen(url) html=page.read() return html def getpic(html): s=r'src="(.*?\.jpg)" pic_ext' piclist=re.findall(s,html) x=0 for imgurl in piclist: urllib.urlretrieve(imgurl,'%d.jpg'%x) x=x+1 htm

【转】用Python写了个金融数据爬虫,半小时干了全组一周的工作量

用Python写了个金融数据爬虫,半小时干了全组一周的工作量 原创kk12345677 最后发布于2019-08-21 16:59:54 阅读数 1652 收藏 展开 最近,越来越多的研究员.基金经理甚至财务会计领域的朋友,向小编咨询:金融人需要学Python么? 事实上在2019年,这已经不是一个问题了.Python已成为国内很多顶级投行.基金.咨询等泛金融.商科领域的必备技能.中金公司.银河证券.南方基金.银华基金在招聘分析师岗位时,纷纷要求熟练掌握Python数据分析技能. Excel我已

用Python写一个最简单的网络爬虫

什么是网络爬虫?这是百度百科的解释: 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫. 爬虫可以做什么?爬虫可以帮助我们在茫茫互联网中爬取我们需要的特定数据,这个特定数据可以是任何想获得的数据. 爬虫是一个让人热血的话题,因为当你在写爬虫的时候,你会感觉到自己是在做一件很NB的事,而每当写出一个爬虫,就会在此基础上不断尝试写出更NB的爬虫,有

python爬虫学习之用Python抢火车票的简单小程序

利用Python制作自动抢火车票小程序,过年再也不要担心没票了! 前言 每次过年很多人都会因为抢不到火车票而回不了家,所以小编利用Python写了一个自动抢火车票的工具,希望大家能抢到火车票,回家过个好年! 我本来想自己写一个练练手的,但是转眼一想,Python 本身最大的优势是什么,不就是有很多牛逼的人已经造好轮子了吗?你只需要知道这些轮子并会使用就行了,这样会节省你大量的精力和时间,而且站在巨人的肩膀上,会看得更远.于是我在 github 上一搜索,果然有不少抢票程序,有的是 Python2

python速成第二篇(小爬虫+文件操作+socket网络通信小例子+oop编程)

大家好,由于前天熬夜写完第一篇博客,然后昨天又是没休息好,昨天也就不想更新博客,就只是看了会资料就早点休息了,今天补上我这两天的所学,先记录一笔.我发现有时候我看的话会比较敷衍,而如果我写出来(无论写到笔记本中还是博客中,我都有不同的感觉)就会有不同的想法,我看书或者看资料有时候感觉就是有一种惰性,得过且过的感觉,有时候一个知识想不通道不明,想了一会儿,就会找借口给自己说这个知识不重要,不需要太纠结了,还是去看下一个吧,然后就如此往复下去,学习就会有漏洞,所以这更加坚定了我写博客来记录的想法.

使用Python写的第一个网络爬虫程序

今天尝试使用python写一个网络爬虫代码,主要是想访问某个网站,从中选取感兴趣的信息,并将信息按照一定的格式保存早Excel中. 此代码中主要使用到了python的以下几个功能,由于对python不熟悉,把代码也粘贴在下面. 1, 使用url打开网站网页 import urllib2 data = urllib2.urlopen(string_full_link).read().decode('utf8') print data 2,使用正则表达式匹配 import re #一般的英文匹配 r

亲身试用python简单小爬虫

前几天基友分享了一个贴吧网页,有很多漂亮的图片,想到前段时间学习的python简单爬虫,刚好可以实践一下. 以下是网上很容易搜到的一种方法: 1 #coding=utf-8 2 import urllib 3 import re 4 5 def getHtml(url): 6 page = urllib.urlopen(url) 7 html = page.read() 8 return html 9 10 def getImg(html): 11 reg = r'src="(.+?\.jpg)

随手用python写一个下载源码爬虫试试

最近在研读jdk源码,网上找了下资源,发现都不完整. 后来新发现了一个有完整源码的地方,主要包括了java,c,c++的东西,装逼需要,就想拿来玩玩.但是,找了好多种下载打开的方式,发现都不对.于是,我随手写了python爬虫,把他搞定. 1. 思路分析 1.1. 目标地址:http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/dddb1b026323/,打开后先自己看下,是否符合自己的需求: 1.2. 分析此结构下主要有两种形式,一是目录文件,二是最终

python写的battle ship小游戏 - 1.0

最近学python,这是今天写的一个小游戏. from random import randint class Board(object): board = [] def __init__(self,row,col): self.board = [] self.row = row self.col = col for i in range(row): self.board.append( ["O"] * col ) def print_board(self): space = (sel