python实现百度URL的采集

用到的模块:threading多线程模块 requests模块  BeautifulSoup模块

实现功能:可以通过命令行控制关键字以及线程数,实现百度的url采集

代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2017-08-25 12:47:59
# @Author  : arong
# @Link    :
# @Version : $Id$

import requests,threading
from bs4 import BeautifulSoup as bs
import time,Queue
import sys

headers={‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0‘}
class BaiduSpider(threading.Thread):
    def __init__(self,queue):
        threading.Thread.__init__(self)
        self._queue=queue

def run(self):
        while not self._queue.empty():
            url=self._queue.get()
            try:
                self.spider(url)
            except Exception,e:
                print e
                pass
    def spider(self,url):
        r=requests.get(url=url,headers=headers)
        soup=bs(r.content,‘lxml‘)
        result=soup.find_all(name=‘a‘,attrs={‘class‘:‘c-showurl‘})
        for url in result:
            url2=url[‘href‘]
            r_get_url=requests.get(url=url2,headers=headers,timeout=8)
            if r_get_url.status_code==200:
                url_tmp=r_get_url.url.split(‘/‘)
                print url_tmp[2]

def main(keyword,thread_count):
    queue=Queue.Queue()
    for i in range(0,50,10):
        queue.put(‘https://www.baidu.com/s?wd=%s&pn=%s‘%(keyword,str(i)))
    threads=[]
    thread_count=int(thread_count)
    for i in range(thread_count):
        threads.append(BaiduSpider(queue))
    for t in threads:
        t.start()
    for t in threads:
        t.join()
if __name__==‘__main__‘:
    if len(sys.argv)!=3:
        print ‘use %s keyword,thread_count‘%sys.argv[0]
        sys.exit(1)
    else:
        main(sys.argv[1],sys.argv[2])

感觉还是有点慢,优化的事情等再学习学习再说吧哈哈哈

时间: 2025-01-08 16:58:26

python实现百度URL的采集的相关文章

Python实验:百度搜索关键字自动打开相关URL

#! python # coding: utf-8 # python实现百度搜索关键字,并依次用浏览器打开前五个搜索结果 ## ##Beautiful Soup 是一个模块,用于从HTML 页面中提取信息(用于这个目的时,它比正则表达式好很多).BeautifulSoup 模块的名称是bs4(表示Beautiful Soup,第4 版).要安装它,需要在命令行中运行pip install beautifulsoup4 import bs4, sys, webbrowser, requests #

python解析百度网页源代码:取搜索引擎返回的前page_num*10个链接的url

如题:python解析百度网页源代码:取搜索引擎返回的前page_num*10个链接的url 最近因为做<信息检索>homework,需要在搜索引擎中搜索某个query,人工查找那些搜索引擎返回的链接,判断前30个是否相关,然后评价该搜索引擎的性能.蛋疼的一个个点进去链接,然后看网页搜索的内容是否和想要查询的query相关,从而进行下一步工作.于是想到解析网页,找到搜索引擎返回的链接的url,等做完了作业才做这个,无碍.目前分析了百度的源代码,进行了分析工作.对于其他搜索引擎的任务再分析. #

百度URL参数解析

百度URL参数解析 在用Python爬取百度搜索的内容时,发现百度搜索的url非常的长,往往会跟一大段的参数,但其实很多参数都是没有必要的,如同样是搜索java关键字,可以通过 http://www.baidu.com/s?wd=java 如此简单的URL来获取,而下面这个超级复杂的URL也是同样进行了关键字java的搜索: http://www.baidu.com/s?wd=java&rsv_spt=1&rsv_iqid=0xd3c8c51900052eb3&issp=1&

百度网盘采集源码 ,直接采集网盘添加cookies功能

名称:百度网盘采集源码 程序语言:php 数据库:mysql 程序介绍: 1.直接采集百度网盘url 2.前端基于bootstrap 3.搜索考虑到后期上亿数据,是基于coreseek,搜索时间毫秒级. 4.前后端做了非常极致的seo优化 5.资源详情页面 为了使内容聚合度.相关度增加,添加了相关内容 6.精准分词功能 7.热门词自动采集 ps:修修补补将近2个月时间,最终开发完成,在seo方面下了很大功夫,有需要的可以联系 q-q:3420435647 演示网站:http://www.blue

二、Python Django的URL设置

Python Django的URL设置 一.url使用方式 1.正则表达方式: url(r'^blog/index/$','blog.views.index'), 2.导入的方式: from blog.views import index ..... url(r'^blog/index/$',index), ..... 3. urlpatterns = patterns('blog.views', url(r'^blog/index/$','index'), ) 二.URL参数传递给index

《百度URL即时推送工具》---让网页秒收

百度推出了一个即时推送接口,可以让你把网页马上推送给百度.这是百度4月份新出的全新的接口,不是那种sitemap权限,是每个网站默认都有的接口.如果顺利的话,一分钟内收录你提交的网页也不是问题.当然这种顺利是有前提的,网站权重高,原创度好等等. 这个接口的介绍可以访问百度站长平台的这篇文章: http://szzfk.com , http://www.szzfk.com ,http://www.szhzjzk.com 不过这个接口需要自己开发程序,所以我们开发了这个<百度URL即时推送工具>.

docs/cplat/rt/python/fetchurl - 百度开放云平台

docs/cplat/rt/python/fetchurl - 百度开放云平台 用python爬虫抓站的一些技巧总结 - OPEN 开发经验库

python 从网络URL读取图片并直接处理的代码

如下代码段是关于python 从网络URL读取图片并直接处理的代码. import urllib2 import Image import cStringIO def ImageScale(url,size): file = cStringIO.StringIO(urllib2.urlopen(url).read()) img = Image.open(file) img.show() 原文地址:http://blog.51cto.com/14142860/2347335

用Python将绝对URL替换成相对URL的代码

下面的内容内容是关于用Python将绝对URL替换成相对URL的内容,应该是对码农有些用途. #!/usr/bin/env python### author : cold night# email : [email protected]# import pymongoimport refrom StringIO import StringIO conn = pymongo.Connection()db = conn.test def replace_url(): results = db['te