如何通过python 获取到100万条URL?

shiter
人工智能领域优质创作者
博客专家认证
2015-07-20 10:20:33
如何通过python 获取到100万条URL?最好是不同的url
完后一条一行,写到txt中?
...全文
526 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiter 2015-08-04
  • 打赏
  • 举报
回复
引用 8 楼 lzz957748332 的回复:
递归啊,抓第一页,然后抓第一页里所有的链接,然后抓链接页里面的链接。 记得去重就行了,100w,应该没多少。 限速啥的,要看那些网站的防抓策略了。
求例子。。。
orangleliu 2015-08-04
  • 打赏
  • 举报
回复
递归啊,抓第一页,然后抓第一页里所有的链接,然后抓链接页里面的链接。 记得去重就行了,100w,应该没多少。 限速啥的,要看那些网站的防抓策略了。
JPF1024 2015-07-29
  • 打赏
  • 举报
回复
参考下面的: 初始化搜索的第一页地址: https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=123&rsv_pq=fc150da60000dfdd&rsv_t=500aNoEkB2aXHQRRynfToj%2Bh%2Fjuo4b1Ce%2FJpyITRNB5%2B1R9YEiZiSXkQZ4Y&rsv_enter=1&rsv_sug3=4&rsv_sug2=0&inputT=477&rsv_sug4=1276 这个地址也是第一页[和上面的区别是,这个是从第四页点过来的]: https://www.baidu.com/s?wd=123&pn=0&oq=123 第二页的地址[地址我修改过的]: https://www.baidu.com/s?wd=123&pn=10&oq=123 第三页的地址[地址我修改过的]: https://www.baidu.com/s?wd=123&pn=20&oq=123 第四页的地址[地址我修改过的]: https://www.baidu.com/s?wd=123&pn=30&oq=123 不同的是pn的参数,设置这个参数应该就可以了.
shiter 2015-07-29
  • 打赏
  • 举报
回复
引用 4 楼 dcxy0 的回复:
然后注意一下,抓取时间间隔,有的服务器会针对同一IP频繁抓取进行封锁。

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""


import urllib2 
import re 
import os

#connect to a URL 
#一页的搜索结果中url大概是200个左右
file_url = open('url.txt','ab+')
#搜索框里的东西,这块可以设置成数字好让每次搜索的结果不一样
search = '123'
url = "http://www.baidu.com/s?wd="+search


def setUrlToFile():
    website = urllib2.urlopen(url) 
    #read html code 

    html = website.read() 

    #use re.findall to get all the links 

    links = re.findall('"((http|ftp)s?://.*?)"', html)
 

    for s in links:
        print s[0]
        if len(s[0]) < 256:
            file_url.write(s[0]+'\r\n')
    
#收集实验数据
for i in range(0,50):
    setUrlToFile()

file_url.close()


###需要重新打开再读一下
file_url = open('url.txt','r')
file_lines = len(file_url.readlines())
print "there are %d url in %s" %(file_lines,file_url)
file_url.close()



shiter 2015-07-29
  • 打赏
  • 举报
回复
引用 4 楼 dcxy0 的回复:
然后注意一下,抓取时间间隔,有的服务器会针对同一IP频繁抓取进行封锁。
[code=python][/ # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ import urllib2 import re import os #connect to a URL #一页的搜索结果中url大概是200个左右 file_url = open('url.txt','ab+') #搜索框里的东西,这块可以设置成数字好让每次搜索的结果不一样 search = '123' url = "http://www.baidu.com/s?wd="+search def setUrlToFile(): website = urllib2.urlopen(url) #read html code html = website.read() #use re.findall to get all the links links = re.findall('"((http|ftp)s?://.*?)"', html) for s in links: print s[0] if len(s[0]) < 256: file_url.write(s[0]+'\r\n') #收集实验数据 for i in range(0,50): setUrlToFile() file_url.close() ###需要重新打开再读一下 file_url = open('url.txt','r') file_lines = len(file_url.readlines()) print "there are %d url in %s" %(file_lines,file_url) file_url.close() code] 如何抓取第二页的内容??
JPF1024 2015-07-29
  • 打赏
  • 举报
回复
然后注意一下,抓取时间间隔,有的服务器会针对同一IP频繁抓取进行封锁。
夏天__ 2015-07-28
  • 打赏
  • 举报
回复
引用 2 楼 wangyaninglm 的回复:
想用百度的api稳定点,但是发现模拟浏览器发啊送get请求,被禁止了,没哟返回结果啊。。。
如果浏览器可以正常请求,那模拟浏览请 一样可以正常请求, 设置一下请求头信息
shiter 2015-07-23
  • 打赏
  • 举报
回复
想用百度的api稳定点,但是发现模拟浏览器发啊送get请求,被禁止了,没哟返回结果啊。。。
V皓 2015-07-23
  • 打赏
  • 举报
回复
爬取第一个页面,找出所包含的url, 然后再对找出的url进行判重再一个一个进去爬取,几层下来就有很多数据了,答猪也是小白并没有尝试过

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧