查询被收录页面中的死链接 By SEO

朋友说他的站挂了,想知道被收录的页面有多少是死链,于是我就想了一下流程,从Site获得收录数量当然是不精准的,不过也没有更好的地了,真实的收录只有搜索引擎数据库里面才有。。。

查询被收录页面的状态码,流程:获取收录网址 > 解析真实URL > 获取状态码

不过执行起来比较慢,不知道是BeautifulSoup还是 Location 获取真实URL地址这步慢了

#coding:utf-8

import urllib2,re,requests
from bs4 import BeautifulSoup as bs

domain = ‘www.123.com‘    #要查询的域名
page_num = 10 * 10     #第一个数字为要抓取的页数

def gethtml(url):
    headers = {
        ‘Accept‘:‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8‘,
        # ‘Accept-Encoding‘:‘gzip, deflate, sdch‘,
        ‘Accept-Language‘:‘zh-CN,zh;q=0.8‘,
        ‘Cache-Control‘:‘max-age=0‘,
        ‘Connection‘:‘keep-alive‘,
        ‘Cookie‘:‘BDUSS=ng4UFVyUUpWU2hUR2R3b3hKamtpaE9ocW40LTFZcGdWeDBjbXkzdE83eDJQSE5YQVFBQUFBJCQAAAAAAAAAAAEAAADD3IYSamFjazE1NDUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHavS1d2r0tXa; ispeed_lsm=2; PSTM=1465195705; BIDUPSID=2274339847BBF9B1E97DA3ECE6469761; H_WISE_SIDS=102907_106764_106364_101556_100121_102478_102628_106368_103569_106502_106349_106665_106589_104341_106323_104000_104613_104638_106071_106599_106795; BAIDUID=D94A8DE66CF701AB5C3332B1BF883DDC:FG=1; BDSFRCVID=UEusJeC62m80hjJRoxzDhboaBeKaL6vTH6aIa6lTlb9Zx-72yRF7EG0PfOlQpYD-d1GyogKK3gOTH4jP; H_BDCLCKID_SF=fR-foIPbtKvSq5rvKbOEhPCX-fvQh4JXHD7yWCvG3455OR5Jj65Ve58JM46N2bvE3IbaWbjP5lvH8KQC3MA--fF_jxvn2PD8yj-L_KoXLqLbsq0x0-jchh_QWt8LKToxMCOMahkb5h7xOKbF056jK4JKjH0qt5cP; SIGNIN_UC=70a2711cf1d3d9b1a82d2f87d633bd8a02157232777; BD_HOME=1; BD_UPN=12314353; sug=3; sugstore=1; ORIGIN=0; bdime=0; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; H_PS_645EC=a5cfUippkbo0uQPU%2F4QbUFVCqXu4W9g5gr5yrxTnJT10%2FElVEvJBbeyjWJq8QUHgepjd; BD_CK_SAM=1; BDSVRTM=323; H_PS_PSSID=1434_20317_12896_20076_19860_17001_15506_11866; __bsi=16130066511508055252_00_0_I_R_326_0303_C02F_N_I_I_0‘,
        # ‘Host‘:‘www.baidu.com‘,
        ‘Upgrade-Insecure-Requests‘:‘1‘,
        ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36‘,
    }

    req = urllib2.Request(url=url,headers=headers)
    html = urllib2.urlopen(req,timeout = 30).read()
    return html

def status(url):    #返回状态码
    status = requests.get(url).status_code
    return status

status_file = open(‘url_status.txt‘,‘a+‘)
for i in range(10,page_num,10):
    url = ‘https://www.baidu.com/s?wd=site%3A‘ + domain + ‘&pn=‘ + str(i)
    html = gethtml(url)

    soup = bs(html,"lxml")
    for i in soup.select(‘.c-showurl‘):
        # print i.get(‘href‘)
        urls = i.get(‘href‘)
        # url_list.append(urls)
        header = requests.head(urls).headers
        header_url = header[‘location‘]    #获取真实URL
        if int(status(header_url)) == 404:
            print status(header_url),header_url    #打印状态码和真实URL
            status_file.write(str(status(header_url)) + ‘ ‘ + header_url + ‘\n‘)    #获取的状态码和链接写入文件

status_file.close()
#获取状态码函数

借鉴的代码段

#coding: utf-8
import sys
import urllib
import urllib2
from BeautifulSoup import BeautifulSoup

question_word = "吃货 程序员"
url = "http://www.baidu.com/s?wd=" + urllib.quote(question_word.decode(sys.stdin.encoding).encode(‘gbk‘))
htmlpage = urllib2.urlopen(url).read()
soup = BeautifulSoup(htmlpage)
print len(soup.findAll("table", {"class": "result"}))
for result_table in soup.findAll("table", {"class": "result"}):
    a_click = result_table.find("a")
    print "-----标题----\n" + a_click.renderContents()#标题
    print "----链接----\n" + str(a_click.get("href"))#链接
    print "----描述----\n" + result_table.find("div", {"class": "c-abstract"}).renderContents()#描述
    print
时间: 2025-01-07 09:05:51

查询被收录页面中的死链接 By SEO的相关文章

PHP获取指定URL页面中的所有链接

form:http://www.uphtm.com/php/253.html 这个东西其实我们开发人员来讲常用了,以前做一个抓取其它网站友情连接时用过,今天看到一朋友整理了一个PHP获取指定URL页面中的所有链接函数,整理过来我们一起来看看吧. 以下代码可以获取到指定URL页面中的所有链接,即所有a标签的href属性: // 获取链接的HTML代码 $html = file_get_contents('http://www.111cn.net'); $dom = new DOMDocument(

页面中查询模块的设计与实现思路

在做一个物品的展示管理页面,想把增删改查都放到页面中,用axure画了一个页面,比较简单,主要分为上下两部分,上半部分是查询模块,下半部分是表格,用来展示数据.新增按钮单独在页面中,修改按钮在表的每一行数据后面,删除按钮在表格下面,将表格中的数据每一行设为可选,选择后进行删除操作.查询部分没有考虑很多,只是列了几个物品的主要属性,有下拉框有文本框,可选可填,然后查询,其实默认的就是这些查询条件之间是"与"的关系. 图1 自己设计的查询模块??项目在讨论的时候,技术领导说了一下这个地方设

使用PHP的正则抓取页面中的网址

最近有一个任务,从页面中抓取页面中所有的链接,当然使用PHP正则表达式是最方便的办法.要写出正则表达式,就要先总结出模式,那么页面中的链接会有几种形式呢? 链接也就是超级链接,是从一个元素(文字.图片.视频等)链接到另一个元素(文字.图片.视频等).网页中的链接一般有三种,一种是绝对URL超链接,也就是一个页面的完整路径:另一种是相对URL超链接,一般都链接到同一网站的其他页面:还有一种是页面内的超链接,这种一般链接到同一页面内的其他位置. 搞清楚了链接的种类,就知道要抓链接,主要还是绝对URL

HTML <base> 标签 为页面上的所有链接规定默认地址或默认目标

定义和用法 <base> 标签为页面上的所有链接规定默认地址或默认目标. 通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白. 使用 <base> 标签可以改变这一点.浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有的相对 URL.这其中包括 <a>.<img>.<link>.<form> 标签中的 URL. <base> 标签必须位于 head 元素内部.

常用工具篇(二)死链接扫描工具–Xenu

一个网站上线一段时间之后,可能出现很多的死链接,死链接就是那些打不开的链接,或者是请求是404的,可能是因为有的文件位置移动了,或者有的功能不好使了,可能会影响我们网的功能,我们就要隔一阵扫描一下网站上有没有这样的连接,或者我们在测试的时候,也要看下有没有这样的连接存在,提高我们网站的可靠性. 当然我们也不能打开一个网站手动一个个点,当然你要会写代码的,自己写个爬虫,获取到所有的连接,然后请求一下,获取到结果,把结果写到一个文件里. 但是对于不会写代码的小伙伴来说,做起来就比较费劲了,但是有一个

获取指定URl页面中所有链接

//获取指定URL页面中所有链接 function get_url_href($url){ $html = file_get_contents($url); $dom = new DOMDocument(); @$dom->loadHTML($html); $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate('/html/body//a'); for($i=0;$i<$hrefs->length;$i++){ $href =

cefsharp wpf wpf加载svg 在同一个页面中打开链接

安装 PM> Install-Package CefSharp.Wpf 解决方案->属性->配置属性->活动解决方案平台-新建-x64 在需要使用的窗体上引用xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf" 重新生成解决方案 引用 <cefSharp:ChromiumWebBrowser Name="browser" Grid.Row="0&qu

使用内链接(A a inner join B b on a.xx = b.xx)查询2个表中某一列的相同的字段。

这里一句代码就是查询2个表中某一列的相同,可是查询出来之后B表因为有很多重复的id数据,然而查询出来的数据需要插入到临时表中,临时表的oid是不允许有重复的, 因此需要用到 distinct 函数来取出重复.

网站收录页面数量减少原因及分析

很多网络优化人员在网站优化工程中肯定都遇到过网页收录数量突然大量减少问题,那么通常的这种网页收录数量减少都是什么原因造成的呢? 1.搜索引擎算法的更新.        在历次搜索引擎算法更新中,很多网站都会出现网站排名不稳定,网站收录数量变化等情况,这时候大家可以对其他网站的数据进行对比,如果其他网站都有该情况,就可以视为正常,有时候这样的网站收录数量的减少反而对网站优化推广来说是个好事. 2.网站的内容复制粘贴或者大量采集,毫无原创性.      有一些网站管理人员为了减少网站的打理时间或者网