#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2017-08-29 18:38:23
# @Author : EnderZhou (zptxwd@gmail.com)
# @Link : http://www.cnblogs.com/enderzhou/
# @Version : $Id$ import requests
import sys
from Queue import Queue
import threading
from bs4 import BeautifulSoup as bs
import re # 默认爬取百度76页搜索结果url,调用格式 Python.exe 本文件名称.py 搜索关键字,如关键字含特殊符号使用引号包含起来。
# 爬取结果有txt文档输出。目前尚未能过来百度推广链接,后续有可能会完善。另外后续将会添加同一网站相同路径不通参数url的过滤。
# https://www.baidu.com/s?wd=ichunqiu&pn=10
# wd参数为搜索内容关键字 pn参数控制页码 第二页为10 每页新增10 最大页数参数为750即76页。 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36',} 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 as e:
# print e
pass def spider(self,url):
r = requests.get(url=url,headers=headers)
soup = bs(r.content,'html.parser')
urllist = soup.find_all(name='a',attrs={'data-click':re.compile(('.')),'class':None,'data-is-main-url':None})
for i in urllist:
l = requests.get(url=i['href'],headers=headers)
if l.status_code == 200:
ll = l.url.split('/')
lll = ll[0]+'//'+ll[2]+'\n'
#可根据需求修改是否显示主域名
sys.stdout.write(lll+l.url+'\n')
f1 = open('out_para.txt','a+')
f1.write(l.url+'\n')
f1.close()
with open('out_index.txt') as f:
if lll not in f.read():
f2 = open('out_index.txt','a+')
f2.write(lll)
f2.close() def main(keyword):
queue = Queue()
for i in range(0,760,10):
l = 'https://www.baidu.com/s?wd='+keyword+'&pn='+str(i)
# print l
queue.put(l)
threads = []
thread_count = 5
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) != 2:
print 'Enter:python %s keyword' % sys.argv[0]
sys.exit(-1)
else:
f1 = open('out_para.txt','w')
f1.close()
f2 = open('out_index.txt','w')
f2.close()
main(sys.argv[1])

python 爬取百度url的更多相关文章

  1. Python——爬取百度百科关键词1000个相关网页

    Python简单爬虫——爬取百度百科关键词1000个相关网页——标题和简介 网站爬虫由浅入深:慢慢来 分析: 链接的URL分析: 数据格式: 爬虫基本架构模型: 本爬虫架构: 源代码: # codin ...

  2. python爬取百度贴吧帖子

    最近偶尔学下爬虫,放上第二个demo吧 #-*- coding: utf-8 -*- import urllib import urllib2 import re #处理页面标签类 class Too ...

  3. 爬虫实战(一) 用Python爬取百度百科

    最近博主遇到这样一个需求:当用户输入一个词语时,返回这个词语的解释 我的第一个想法是做一个数据库,把常用的词语和词语的解释放到数据库里面,当用户查询时直接读取数据库结果 但是自己又没有心思做这样一个数 ...

  4. 假期学习【十一】Python爬取百度词条写入csv格式 python 2020.2.10

    今天主要完成了根据爬取的txt文档,从百度分类从信息科学类爬取百度词条信息,并写入CSV格式文件. txt格式文件如图: 为自己爬取内容分词后的结果. 代码如下: import requests fr ...

  5. python爬取百度搜索结果ur汇总

    写了两篇之后,我觉得关于爬虫,重点还是分析过程 分析些什么呢: 1)首先明确自己要爬取的目标 比如这次我们需要爬取的是使用百度搜索之后所有出来的url结果 2)分析手动进行的获取目标的过程,以便以程序 ...

  6. 使用python爬取百度贴吧内的图片

    1. 首先通过urllib获取网页的源码 # 定义一个getHtml()函数 def getHtml(url): try: page = urllib.urlopen(url) # urllib.ur ...

  7. python 爬取百度云资源

    pan1 1 import urllib.request 2 import re 3 import random 4 5 def get_source(key): 6 7 print('请稍等,爬取中 ...

  8. python爬取百度翻译返回:{'error': 997, 'from': 'zh', 'to': 'en', 'query 问题

    解决办法: 修改url为手机版的地址:http://fanyi.baidu.com/basetrans User-Agent也用手机版的 测试代码: # -*- coding: utf-8 -*- & ...

  9. Python爬取百度贴吧数据

    本渣除了工作外,在生活上还是有些爱好,有些东西,一旦染上,就无法自拔,无法上岸,从此走上一条不归路.花鸟鱼虫便是我坚持了数十年的爱好. 本渣还是需要上班,才能支持我的业余爱好.上班时间还是尽量访问外网 ...

随机推荐

  1. radio(单选框)/checkbox(复选框) 美化

    由于某种原因,可能需要对单选框(radio)或复选框(checkbox)进行美化,那么直接修改样式是行不通,要实现就需要添加js,以下js依赖于jquery radio.js: function ra ...

  2. css基础部分

  3. dispatchEvent 自定义触发事件,常用于自定义鼠标事件或点击事件

    自定义事件的触发又是不可避免的,由于浏览器兼容性问题,我们要分开说了,针对标准浏览器和IE6/7等考古浏览器. 1. 对于标准浏览器,其提供了可供元素触发的方法:element.dispatchEve ...

  4. AOP 实现日志

    package com.foen.foensys.config; import com.alibaba.fastjson.JSON;import com.foen.foensys.model.SysL ...

  5. (转)Spring实例化

    标签:SpringContextUtil,getBean 手动获取Bean 方法一  不用配置xml,直接java代码实现 /** * 工厂模式选择Bean类 */ public class MyBe ...

  6. mv:移动文件或改名

    mv 命令(move 的缩写),既可以在不同的目录之间移动文件或目录,也可以对文件和目录进行重命名.该命令的基本格式如下: mv [选项] 源文件 目标文件 选项: -f:强制覆盖,如果目标文件已经存 ...

  7. unittest详解(五) 引入装饰器@classmethod

    我们知道setUp()和setDown()的作用是在每条测试用例执行前准备测试环境以及用例测试结束后恢复测试环境,如果我们执行的测试类下所有测试用例的环境准备和环境复原的操作都是一样的,那么我们就没必 ...

  8. win10下MYSQL 8.0.16的下载、安装以及配置

    win10系统MySQL 8.0的下载安装超详细教程 https://blog.csdn.net/qq_34444097/article/details/82315587 下载安装配置链接:https ...

  9. CF1213F Unstable String Sort

    题目链接 问题分析 题目实际上是一堆大于等于的约束.观察这\(2n-2\)个约束.第一组可以将要求的排成一个不降的序列,然后第二组就是在第一组的基础上再添加条件. 不妨设第一组生成的不降序列是\(\{ ...

  10. HDU1257--最少拦截系统(DP)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...