linkBG

linkBG 查看完整档案

北京编辑中国劳动关系学院  |  计算机应用技术 编辑北京知道创宇信息技术有限公司  |  实习生 编辑填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

linkBG 关注了标签 · 2020-09-15

智能合约

区块链上,可以执行的代码,以太坊第一个支持智能合约

关注 89

linkBG 提出了问题 · 2018-11-22

实时流数据收集的问题

问题描述

需要实现一个分布式系统,把日志和数据收集值数据服务器上。在不使用Kafka之类的消息框架,有没有好的解决方式呢?

关注 2 回答 1

linkBG 提出了问题 · 2018-11-08

解决C语言malloc释放

问题描述

在C语言项目中的某个函数里使用malloc来申请空间。最后函数返回保存在这个空间的值,也就是在函数中并没有free申请的空间,那么在函数外需要free吗?

相关代码

char *test() {
    char *op = malloc(sizeof(char) * 16);
    ...
    return op;
 }
 
 int main() {
     printf("%s", test());
 }

关注 2 回答 1

linkBG 提出了问题 · 2017-11-22

gitlab设置只允许域名访问ip拒绝访问

在内网搭了个gitlab,目前域名和ip都可以访问,使用了:

server_name _; 
return 500; 

之后就连域名也无法访问。请问该怎么设置?谢谢

关注 1 回答 0

linkBG 提出了问题 · 2017-11-08

Scrapy循环爬取

想要对一个页面进行监控,这个页面是有分页,目前实现了所有分页的抓取,那么想要回到第一个分页来监控,请问怎么写。

        if len(response.css('li.next.disabled a::attr(href)').extract()) == 0:
            next_page = response.css('li.next a::attr(href)')[0].extract()
            next_page = response.urljoin(next_page)
            yield scrapy.Request(next_page, callback=self.parse)
        else:
            yield scrapy.Request(self.start_urls[0], callback=self.parse)

上面的代码会报错:

  • no more duplicates will be shown (see DUPEFILTER_DEBUG to show all duplicates)

如何使出现异常仍然可以继续进行呢?
谢谢

关注 4 回答 3

linkBG 提出了问题 · 2017-09-26

regex中灵活匹配

匹配的数据并不是规则的。
待处理数据文本-》比如:

h|aaaaaaaaaa| k/kkk/ e/eeeee/
h|bbbbbbbbbb| k/oooooo/ e/rrrrrr/
h|cccccccccc| k/pppppp/ e/qqqqqq/

#数据中‘h|’ ‘k/’ 'e/'是字段名称,下面的情况

数据大概是这样的,然后写了下面的regex

h\|(.*?)\|\sk\/(.*?)\/\se\/(.*?)\/

但在测试中发现,有些数据:

情况(1):h|aaaaaaaaaa| k/kkk/ #只存在k/ 
情况(2):h|aaaaaaaaaa| #k/和e/都不存在
情况(3):h|aaaaaaaaaa| k/kkk/ 其他信息不确定的数据长度 e/eeeee/ # k/和e/中存在其他字段

像上述三种情况,如何才能使上述的正则能匹配到呢?或者还是需要怎么修改呢?谢谢~

关注 3 回答 2

linkBG 提出了问题 · 2017-06-29

Scrapy存在内存泄漏的问题。

再编写爬虫的时候,总是跑了一段时间(不会超过12个小时)就会被OOM掉。很是无奈!!!
根据官方的文档, 使用这个prefs()但是实在找不出问题的所在。

Live References

HtmlResponse                       42   oldest: 753s ago
MySuteSpider                        1   oldest: 2964s ago
Request                         32412   oldest: 2920s ago
Selector                           42   oldest: 751s ago
TripItem                           37   oldest: 751s ago

爬虫的处理是获取所有页面的a标签的链接:

#获取域名的后缀
def get_domain_suffix(domain):
    if 'com' in tldextract.extract(domain).suffix:
        return True
    return False
#拼接域名。只存主域名
def save_domain(domain):
    domain_name = tldextract.extract(domain).domain
    suffix_name = tldextract.extract(domain).suffix

    return domain_name + '.' + suffix_name

#获取域名ip
def get_domain_ip(domain):
    try:
        ip = socket.gethostbyname(domain)
        return ip
    except:
        return '114.114.114.114'

# 获取域名所在的国家
def get_domain_ct_iso(ip):
    GEO = geoip2.database.Reader(
        '/var/test/geodb/GeoLite2-City.mmdb')
    r = GEO.city(ip)
    return r.country.iso_code

class MyDomainSpider(scrapy.Spider):
    name = 'my_domain'
    start_urls = [
        'http://xxx.com
    ]

    def parse_items(self, response):
        item = TripItem()
        for url in response.xpath('//a/@href').extract():
            if url.startswith('http'):
                    domain = urlparse.urlparse(url).netloc
                    if get_domain_tw(domain) or get_domain_ct_iso(get_domain_ip(domain)) == 'US':
                        item['domain'] = save_domain(domain)
                        item['ip'] = get_domain_ip(domain)
                        item['datetime'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                        yield item


    def parse(self, response):
        for url in response.xpath('//a/@href').extract():
            if url.startswith('http'):
                domain = urlparse.urlparse(url).netloc
                if get_domain_tw(domain) or get_domain_ct_iso(get_domain_ip(domain)) == 'US':
                     yield scrapy.Request(url, callback=self.parse_items)

请指教一下谢谢

关注 2 回答 1

linkBG 赞了回答 · 2017-06-18

解决for循环怎么跳出,好像被绕晕了

continue跳出最近(或最内层)的循环, 也就是内部的for.

关注 1 回答 1

linkBG 提出了问题 · 2017-06-18

解决for循环怎么跳出,好像被绕晕了

h = ['hp','op']


for x in ['POP','PHP','PYTHON']:
    for y in h:
        if y in x:
            continue #如果这个跳出循环 ,下一句就不会print
    print x 

我的理解时直接跳出最外层的for循环,可是为什么不是这样呢?

关注 1 回答 1

linkBG 提出了问题 · 2017-06-16

Scrapy忽略google等其他网站

现有项目爬虫很不友好,所以想改一下,有个不知道怎么表达的情况,就是我在爬去目标站点,我不希望我的爬虫会出这个站,但是在实际的情况,当a标签有其他比如广告,更现实的是google这种的。所以我在想有灭有可以建立白名单的情况,在这个列表下,如果存在这个列表那么我就不在加入url中了。我写了下面的代码。但是实际情况不行阿

for url in response.xpath('//a/@href').extract():
    if re.match('^http',url):
        if url not in DOMAINS and not len([x for x in DBD_DOMAINS if x in url]):
            DOMAINS.append(url)
            with open(filename, 'a+') as f:
                 f.write(url+'\r\n')
            yield scrapy.Request(url, callback=self.parse)
DBD_DOMAINS = ['fackbook.com', 'google.com', 'twitter.com', 'yahoo.com','apple.com']

应该怎么修改才能实现呢?谢谢

关注 2 回答 1

认证与成就

  • 获得 2 次点赞
  • 获得 123 枚徽章 获得 0 枚金徽章, 获得 37 枚银徽章, 获得 86 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

注册于 2014-06-21
个人主页被 754 人浏览