学习笔记python爬取百度真实url

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记python爬取百度真实url相关的知识,希望对你有一定的参考价值。

        今天跑个脚本需要一堆测试的url,,,挨个找复制粘贴肯定不是程序员的风格,so,还是写个脚本吧。

        环境:python2.7

        编辑器:sublime text 3

       一、分析一下

        首先非常感谢百度大佬的url分类非常整齐,都在一个类下

       

技术分享

        即c-showurl,所以只要根据css爬取链接就可以,利用beautifulsoup即可实现,代码如下:

        

        soup = BeautifulSoup(content,‘html.parser‘)
        urls = soup.find_all("a",class_=‘c-showurl‘)

        还有另外的一个问题是百度对url进行了加密,要想获得真实的url,我的思路是访问一遍加密的url,再获得访问界面的url,这时获取到的url即为真实的url。

完整代码如下:

#coding = utf-8
import requests
from bs4 import BeautifulSoup
import time

headers = {
                    ‘Accept‘:‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8‘,
                    ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 QIHU 360SE‘
            }

page_start = raw_input(‘please input stratpage\n‘)
page_end = raw_input(‘please input endpage\n‘)
word = raw_input(‘please input keyword\n‘)

if page_start == 1:
    page_start = 0
else:
    page_start = (int(page_start)-1)*10

page_end = (int(page_end)-1)*10

for i in range(page_start,page_end,10):
    url = ‘http://www.baidu.com/s?wd=‘+word+‘&pn=‘+str(i)
    try:
        response = requests.get(url,headers=headers,timeout=10)
        print ‘downloading...‘+url
        content = response.content
        soup = BeautifulSoup(content,‘html.parser‘)
        urls = soup.find_all("a",class_=‘c-showurl‘)
        for href in urls:
            a = href[‘href‘]
            try:
                res = requests.get(a,headers=headers,timeout=10)
                with open(‘urls.txt‘,‘a‘) as f:
                    f.write(res.url)
                    f.write(‘\n‘)
                time.sleep(1)
            except Exception,e:
                print e
                pass
    except Exception,e:
        print e
        pass

当然,这只是简单的功能,如果爬取大量的url,建议利用线程进行处理,不然等到爬完也等到地老天荒了。。。。。我是爬取百十来个url,亲测还可以。

本文出自 “踟蹰” 博客,请务必保留此出处http://chichu.blog.51cto.com/11287515/1963693

以上是关于学习笔记python爬取百度真实url的主要内容,如果未能解决你的问题,请参考以下文章

假期学习Python爬取百度词条写入csv格式 python 2020.2.10

通过python 爬取网址url 自动提交百度

Python学习笔记(五十)爬虫的自我修养爬取漂亮妹纸图

Python 爬虫实战—盘搜搜

python爬虫—爬取百度百科数据

python 爬取百度url