Пример #1
0
def parse_body(html, pageName, number):
    doc = jq(html)('.c_content_overflow')
    imgs = jq(doc('img'))
    urls = []
    for img in imgs:
        urls.append(''.join(['http://qq.yh31.com', jq(img).attr('src')]))
    return tools.saveImgsByNum(urls, pageName, number)
Пример #2
0
def get_one_page(page, mysql):
    url = 'https://hz.fang.lianjia.com/loupan/xihu-xiacheng-jianggan-gongshu-shangcheng-binjiang-yuhang-xiaoshan/pg%s#xiaoshan' % page
    browser.get(url)
    html = browser.page_source
    doc = jq(html)
    print('now is in page %s' % page)
    if page > 1:
        WebDriverWait(browser, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, '.page-box .next')))
        btn = browser.find_element_by_css_selector('.page-box .next')
        if not btn:
            print('no more page')
            return
        browser.execute_script(
            'window.scrollTo(0, document.body.scrollHeight)')
        btn.click()

    WebDriverWait(browser, 5).until(
        EC.presence_of_element_located(
            (By.CSS_SELECTOR, '.page-box span.active')))
    WebDriverWait(browser, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, '.resblock-list')))
    items = doc.find('.resblock-list .resblock-desc-wrapper')
    for item in items:
        mysql.insert(parse_one_item(jq(item)))
Пример #3
0
def Crack(Resp=None, Content=None, Url=None):
    Content = Resp.text if Resp else Content
    Url = Resp.url if Resp else Url
    JQData = jq(Content)("#challenge-form")
    JSCode = jq(Content)("script").eq(0).text().replace(
        "\n", "").split("setTimeout(function(){")[1].split(
            "f.action += location.hash")[0].replace("a.value", "res").replace(
                "t.length", "12").split(";")
    KeyData = json.loads('{"' + JSCode[0].split(",")[-1].replace(
        '":', '":"').replace("}", '"}').replace("=", '":') + "}")

    Key = list(KeyData.keys())[0]
    Key2 = list(KeyData[Key].keys())[0]
    Key3 = f"{Key}.{Key2}".strip()
    StartData = execjs.eval(JSCode[0].split(",")[-1])
    print(f"keyCode_{StartData[Key2]} -- > {JSCode[0].split(',')[-1]}")
    for i in JSCode[10:-3]:
        Code = i.replace(Key3, "")
        Method = Code[0]
        Code = "{" + f'"{Key2}":{Code[2:]}' + "}"
        StartData[Key2] = eval(
            f"StartData[Key2]{Method}{execjs.eval(Code)[Key2]}")
        print(f"keyCode_{StartData[Key2]} --> {Code}")

    Params = {i.attr("name"): i.attr("value") for i in JQData('input').items()}
    Params["jschl_answer"] = execjs.eval(JSCode[-3].replace(
        Key3, str(StartData[Key2])))

    time.sleep(4)
    return f'{urljoin(Url, JQData.attr("action"))}?{"&".join([f"{k}={v}" for k,v in Params.items()])}'
Пример #4
0
 def GetTask(self):
     try:
         resp = self.session.get(TargetUrl)
         if self.resp_check(resp):
             content = jq(resp.content)
             self.task = [self.pkgtaskitem(items) for items in jq(resp.content)(
                 "body > div.box > div > div.fallsFlow > ul").items('li>a') if "神奇世界看看看" in jq(items).attr("title")]
             self.logger.info(f"Get Task Success --> {self.task}")
     except Exception as e:
         self.logger.error(e)
Пример #5
0
    def data_parser(self, resp, method=None):
        if method == "getcookie":
            content = resp.text
            jqdata = jq(content)("#challenge-form")
            path = jqdata.attr("action")
            scripts = jq(content)("script").eq(0).text()
            jscode = scripts.replace(
                "\n", "").split("setTimeout(function(){")[1].split(
                    "f.action += location.hash")[0].replace(
                        "a.value", "res").replace("t.length", "12").split(";")
            keydata = json.loads('{"' + jscode[0].split(",")[-1].replace(
                '":', '":"').replace("}", '"}').replace("=", '":') + "}")
            key = list(keydata.keys())[0]
            key_2 = list(keydata[key].keys())[0]
            key_3 = "{key}.{key_2}".format(key=key, key_2=key_2).strip()

            start_data = execjs.eval(jscode[0].split(",")[-1])
            self.loger.info("keycode_{0} -- > {1}".format(
                start_data[key_2], jscode[0].split(',')[-1]))
            for i in jscode[10:-3]:
                code = i.replace(key_3, "")
                method = code[0]
                code = "{" + '"{0}":{1}'.format(key_2, code[2:]) + "}"
                start_data[key_2] = eval("start_data[key_2]{0}{1}".format(
                    method,
                    execjs.eval(code)[key_2]))
                self.loger.info("keycode_{0} -- > {1}".format(
                    start_data[key_2], code))

            params = {
                i.attr("name"): i.attr("value")
                for i in jqdata('input').items()
            }
            params["jschl_answer"] = execjs.eval(jscode[-3].replace(
                key_3, str(start_data[key_2])))
            return '{0}?{1}'.format(
                urljoin(self.main_url, path),
                "&".join(["{0}={1}".format(k, v) for k, v in params.items()]))

        else:
            with open("test.html", "wb") as f:
                f.write(resp.content)
            for item in jq(resp.text)("#maindiv >table tr").items():
                key = item("td:nth-child(1)").text()
                self.datas[key] = {}
                self.datas[key]['TxHASH'] = item("td:nth-child(1)").text()
                self.datas[key]['Age'] = item("td:nth-child(2)").text()
                self.datas[key]['From'] = item("td:nth-child(3)").text()
                self.datas[key]['Other'] = item("td:nth-child(4)").text()
                self.datas[key]['To'] = item("td:nth-child(5)").text()
                self.datas[key]['Quantity'] = item("td:nth-child(5)").text()
Пример #6
0
def get_image():
    isNext = 0
    url = 'http://qq.yh31.com/zjbq/0551964.html'
    pageName = []
    pageName.append("jinguanzhang")
    number = 1
    while (isNext == 0):
        html = tools.getHTML(url)
        doc = jq(html)("#pe100_page_contentpage")
        next = jq(doc("a:last")).attr('href')
        nextUrl = ''.join(['http://qq.yh31.com', next])
        if (nextUrl == url):
            isNext = 1
        number = parse_body(html, pageName[0], number)
        url = nextUrl
Пример #7
0
def checkIP():
    try:
        resp = requests.get('https://ipinfo.info/html/my_ip_address.php',
                            proxies={'https': 'socks5://127.0.0.1:9150'})
        loger.info(jq(resp.text)("#Text10 > p > span > b").text())
    except Exception as e:
        loger.error(e)
Пример #8
0
 def FirstFetch(self):
     targets = DarkNetWebSites.select().where(
         DarkNetWebSites.ismaster == self.usemaster)
     if not targets:
         return
     target = targets[0]
     try:
         self.warn(f'[{target.domain}]Getting PHPSESSID')
         resp = self.session.get(f'http://{target.domain}')
         target.ismaster = True
         target.title = jq(resp.text)('title').text()
         self.usemaster = True
         self.master = target
         self.domain = target.domain
         user = DarkNet_User.select().where(
             DarkNet_User.useful == True).order_by(fn.Rand()).limit(1)
         if not bool(user):
             self.Reg()
         else:
             self.usr = user[0].user
             self.pwd = user[0].pwd
             if random.choice([1, 0]):  # 佛系注册堆积账号池
                 self.Reg()
         return True
     except KeyboardInterrupt:
         pass
     except requests.Timeout:
         target.alive = False
         target.ismaster = False
         self.usemaster = False
     except Exception as e:
         raise
     finally:
         target.save()
Пример #9
0
def getData(type: str):
    url = "https://proxy.mimvp.com/freeopen.php?proxy=" + type
    proxy = getProxy()
    with requests.get(url=url,
                      proxies=proxy,
                      headers=header.getHeader(
                          "https://proxy.mimvp.com/freesecret.php")) as rsp:
        trs = jq(
            rsp.text)("table.mimvp-tbl.free-proxylist-tbl>tbody>tr").items()
    for tr in trs:
        tds = tr("td")
        ip = tds.eq(1).text()
        if ip == "": continue
        portSrc = "https://proxy.mimvp.com/" + tds.eq(2)("img").attr("src")
        with requests.get(portSrc,
                          proxies=proxy,
                          headers=header.getHeader(url)) as rsp:
            port = pytesseract.image_to_string(Image.open(
                io.BytesIO(rsp.content)),
                                               lang="num")
        proto = tds.eq(3).text()
        if proto.index("HTTP") > -1:
            proto = "HTTP"
        elif proto.index("HTTPS") > -1:
            proto = "HTTPS"
        else:
            continue
        addr = {"ip": ip, "port": port, "proto": proto}
        pool.addUnremove(addr)
        return
Пример #10
0
def parse_body(html):
    movies = []
    doc = jq(html)('.x-item')
    for item in doc:
        item = jq(item)
        name = parse_words(item, '.title')
        magnet = jq(item('.title')[1]).attr('href')
        detail = jq(item('.tail')[0]).text()
        #print '名称          :',name
        #print '详细          :',detail
        #print '磁力链接: ',magnet
        #print '--------------------------------------------------------------'
        movie = []
        movie.append(name)
        movie.append(detail)
        movie.append(magnet)
        movies.append(movie)
    return movies
Пример #11
0
def parse_cilisou(html):
    movies = []
    doc = jq(html)('.search-item')
    for item in doc:
        item = jq(item)
        name = parse_words(item, '.item-title')
        magnet = jq(item('a')[1]).attr('href')
        detail = jq(item('span')).text()
        # print '名称          :',name
        # print '详细          :',detail
        # print '磁力链接: ',magnet
        # print '--------------------------------------------------------------'
        movie = []
        movie.append(name)
        movie.append(detail)
        movie.append(magnet)
        movies.append(movie)
    return movies
Пример #12
0
def get_online_url(title):
    print('title:%s' % title)
    browser.get('%s/search?q=%s' % (ONLINE_WEBSITE_PREFIX, title))
    WebDriverWait(browser, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, '.movie-detail')))
    html = browser.page_source
    doc = jq(html)
    movie_details = list(doc.find('.movie-detail').items())[:3]

    infos = []
    for movie_detail in movie_details:
        strong = movie_detail.find('.text-danger')
        if strong:
            url = strong.parent().attr('href')
            url_title = strong.parent().text()
            browser.get('%s%s' % (ONLINE_WEBSITE_PREFIX, url))
            WebDriverWait(browser, 10).until(
                EC.presence_of_element_located(
                    (By.CSS_SELECTOR, '.movie-info')))
            html = browser.page_source
            print(html)
            doc = jq(html)
            play_list = doc.find('.play-list')
            if len(list(play_list)):
                play_urls = ''
                for play in play_list.find('li').items():
                    url = ONLINE_WEBSITE_PREFIX + play.find('a').attr('href')
                    play_urls += url + '\n'
                info = {
                    'title': title,
                    'url_info': {
                        'url_title': url_title,
                        'url': play_urls
                    }
                }
                infos.append(info)
        else:
            print('no online resource')
    if len(infos):
        print(infos)
        mysql.update_online_url(title, str(infos))
    else:
        mysql.update_online_url(title, 'null')
Пример #13
0
 def GetTaskItem(self, url):
     try:
         resp = self.session.get(url)
         if self.resp_check(resp):
             res = jq(resp.content)(".m_r > script").text().split(
                 '"img" :')[1].split("};")[0]
             res = eval(res.replace(" ", ""))
             self.logger.info(f"Get Item Success --> {url} {len(res)}")
             return res
     except Exception as e:
         self.logger.error(e)
Пример #14
0
    def data_parser(self, resp):
        content = resp.text
        jqdata = jq(content)("#challenge-form")
        path = jqdata.attr("action")
        scripts = jq(content)("script").eq(0).text()
        jscode = scripts.replace("\n",
                                 "").split("setTimeout(function(){")[1].split(
                                     "f.action += location.hash")[0].replace(
                                         "a.value",
                                         "res").replace("t.length",
                                                        "12").split(";")
        keydata = json.loads('{"' + jscode[0].split(",")[-1].replace(
            '":', '":"').replace("}", '"}').replace("=", '":') + "}")
        key = list(keydata.keys())[0]
        key_2 = list(keydata[key].keys())[0]
        key_3 = "{key}.{key_2}".format(key=key, key_2=key_2).strip()

        start_data = execjs.eval(jscode[0].split(",")[-1])
        logger.debug("keycode_{0} -- > {1}".format(start_data[key_2],
                                                   jscode[0].split(',')[-1]))
        for i in jscode[10:-3]:
            code = i.replace(key_3, "")
            method = code[0]
            code = "{" + '"{0}":{1}'.format(key_2, code[2:]) + "}"
            start_data[key_2] = eval("start_data[key_2]{0}{1}".format(
                method,
                execjs.eval(code)[key_2]))
            logger.debug("keycode_{0} -- > {1}".format(start_data[key_2],
                                                       code))

        params = {
            i.attr("name"): i.attr("value")
            for i in jqdata('input').items()
        }
        params["jschl_answer"] = execjs.eval(jscode[-3].replace(
            key_3, str(start_data[key_2])))
        return '{0}?{1}'.format(
            urljoin(resp.url, path),
            "&".join(["{0}={1}".format(k, v) for k, v in params.items()]))
Пример #15
0
def get_top_250(page_num):

    url = 'https://movie.douban.com/top250'
    browser.get(url)
    html = browser.page_source
    doc = jq(html)
    print("now is in page %s" % page_num)
    if page_num > 1:
        next_btn = list(
            browser.find_elements_by_css_selector('.paginator a'))[page_num -
                                                                   1]
        browser.execute_script(
            'window.scrollTo(0, document.body.scrollHeight)')
        next_btn.click()
        html = browser.page_source
        doc = jq(html)

    WebDriverWait(browser, 10).until(
        EC.presence_of_element_located(
            (By.CSS_SELECTOR, '#wrapper #content .grid_view')))
    ol = doc.find('.grid_view')

    for item in get_items_in_one_page(ol):
        movies.append(item)
Пример #16
0
def mainPart(son):
    cont = son(".cont")
    source = son(".source")
    title = cont("p").eq(0).text().strip()
    preface = None
    dynasty = source("a").eq(1).text()
    author = source('a').eq(0).text()
    poemContent = ""
    for i in cont("#contson p"):
        span = jq(i).find('span')
        if span:
            preface = filt(span.html())
        else:
            poemContent += filt(jq(i).html()) + "\n"
    poemContent = poemContent.strip()
    if not poemContent:
        poemContent = filt(son("#contson").html())
    return {
        'title': title,
        'content': poemContent,
        'preface': preface,
        'dynasty': dynasty,
        'author': author
    }
Пример #17
0
 def __get_max_page_num(self):
     browser.get(self._url % 1)
     try:
         WebDriverWait(browser, 5).until(
             EC.presence_of_all_elements_located(
                 (By.CSS_SELECTOR, '.page-box a')))
         html = browser.page_source
         doc = jq(html)
         page_btn = doc.find('.page-box a').items()
         max_page_num = int(list(page_btn)[len(list(page_btn)) - 2].text())
         distinct = doc.find('.position a.selected').text()
         self._max_page_num = max_page_num
         self._distinct = distinct
         print('max page num:%d' % max_page_num)
     except Exception as e:
         print(e.args)
         print('no page num')
         self._max_page_num = 0
Пример #18
0
    def GetTypeDatas(self, qeaid, name, page=1):

        url = f"http://{self.domain}/pay/user_area.php?page_y1={page}&q_u_id=0&m_order=&q_ea_id={qeaid}&sid={self.sid}#page_y1"
        self.warn(url)
        resp = self.session.get(url)
        resp.encoding = "utf8"
        hasres = False
        try:
            self.CheckIfNeedLogin(resp)
            self.SaveError(f"{qeaid}_{name}_{page}.html", resp)
            self.info(len(resp.text))
            jqdata = jq(resp.text)
            for item in jqdata("table.m_area_a tr").items():
                detailPath = item("div.length_400>a").attr("href")
                if detailPath:
                    detailsURL = urljoin(resp.url, detailPath)
                    self.GetDetails(
                        detailsURL,
                        {
                            "lines":
                            FixNums(
                                item("td:nth-child(7)").text().replace(
                                    "天", "")),
                            "hot":
                            FixNums(item("td:nth-child(8)").text()),
                            "title":
                            item("td:nth-child(5)").text(),
                            "area":
                            item("td:nth-child(3)").text(),
                        },
                    )
                    hasres = True
            if page == 1:
                maxpageStr = "".join(
                    jqdata(".page_b1:nth-last-child(1)").text().split())
                return (FixNums(maxpageStr, to=1, error=1)
                        if maxpageStr and not self.justupdate else 1)
            if hasres:
                return True
        except Exception as e:
            self.error(f"GetTypeDatas: {e}")
            self.SaveError("GetTypeDatas.html", resp)
            raise
Пример #19
0
 def GetTypeDatas(self, qeaid, name, page=1):
     url = f"http://{self.domain}/pay/user_area.php?page_y1={page}&q_u_id=0&m_order=&q_ea_id={qeaid}&sid={self.sid}#page_y1"
     self.warn(url)
     resp = self.session.get(url)
     resp.encoding = "utf8"
     hasres = False
     try:
         self.CheckIfNeedLogin(resp)
         self.SaveError(f'{qeaid}_{name}_{page}.html', resp)
         self.info(len(resp.text))
         jqdata = jq(resp.text)
         for item in jqdata('table.m_area_a tr').items():
             detailPath = item('div.length_400>a').attr('href')
             if detailPath:
                 detailsURL = urljoin(resp.url, detailPath)
                 self.GetDetails(
                     detailsURL, {
                         'lines':
                         FixNums(
                             item('td:nth-child(7)').text().replace(
                                 '天', '')),
                         'hot':
                         FixNums(item('td:nth-child(8)').text()),
                         'title':
                         item('td:nth-child(5)').text(),
                         'area':
                         item('td:nth-child(3)').text()
                     })
                 hasres = True
         if page == 1:
             maxpageStr = ''.join(
                 jqdata('.page_b1:nth-last-child(1)').text().split())
             return FixNums(
                 maxpageStr, to=1,
                 error=1) if maxpageStr and not self.justupdate else 1
         if hasres:
             return True
     except Exception as e:
         self.error(f"GetTypeDatas: {e}")
         self.SaveError('GetTypeDatas.html', resp)
         raise
Пример #20
0
Файл: app.py Проект: bm-x/Node
def get_index_page():
    if not cookies:
        do_login()

    url = 'http://tgkb168.com/index_cctv.asp'

    res = do_comm_request(url)

    # 可能是登入超时或者登入失效
    if int(res.headers['Content-Length']) < 250:
        do_login()
        res = do_comm_request(url)

    return str(res.content, 'gb2312')

    dom = jq(res.content, parser='html')
    dom('.phone-top').remove()
    dom('script').remove()
    dom('#divkjt_bg').remove()

    return dom.__str__()
Пример #21
0
    def Login(self):
        """
            ### 再次尝试
            1.因为网络问题重试

            ### 重新注册
            2.因为账户被封重试
            3.因为账户认证错误重试
        """
        self.warn("Login...")
        url = f"http://{self.domain}/ucp.php?mode=login"
        data = {
            "username": self.usr,
            "password": self.pwd,
            "login": "******",
            "redirect": f"./index.php&sid={self.sid}",
        }
        resp = self.session.post(url, data=data, verify=False, timeout=120)
        self.sid = "".join(re.findall("sid=(.*?)'", resp.text)[:1])
        if self.usr not in resp.text and "暗网欢迎您" not in resp.text:
            self.error("Auth faild")
            self.SaveError("Autherror.html", resp)
            if "已被封禁" in resp.text:
                DarkNet_User.update({"useful": False}).where(
                    DarkNet_User.user == self.usr
                ).execute()
            self.Reg()
            raise ValueError
        else:
            self.report("Auth Success")
            self.types = {
                item(".index_list_title")
                .attr("href")
                .split("=")[1]
                .split("&")[0]: item("tr:nth-child(1) > td")
                .text()
                .split()[0]
                for item in jq(resp.text)(".ad_table_b").items()
            }
            self.report(self.types)
Пример #22
0
 def FirstFetch(self):
     targets = DarkNetWebSites.select().where(
         DarkNetWebSites.ismaster == self.usemaster)
     if not targets:
         return
     target = targets[0]
     try:
         self.warn(f"[{target.domain}]Getting PHPSESSID")
         self.session.cookies.clear()
         self.info(f"Already Cleaned Session Cookies.")
         resp = self.session.get(f"http://{target.domain}")
         resp = self.session.get(f"http://{target.domain}/index.php")
         self.info(f"Current Cookie Nums: {len(self.session.cookies)}")
         target.ismaster = True
         target.title = jq(resp.text)("title").text()
         self.usemaster = True
         self.master = target
         self.domain = target.domain
         user = (DarkNet_User.select().where(
             DarkNet_User.useful == True).order_by(fn.Rand()).limit(1))
         if not bool(user):
             self.Reg()
         else:
             self.usr = user[0].user
             self.pwd = user[0].pwd
             if random.choice([1, 0, 0]):  # 佛系注册堆积账号池
                 self.Reg()
         return True
     except KeyboardInterrupt:
         pass
     except requests.Timeout:
         target.alive = False
         target.ismaster = False
         self.usemaster = False
     except Exception as e:
         raise
     finally:
         target.save()
Пример #23
0
    def Login(self):
        """
            ### 再次尝试
            1.因为网络问题重试

            ### 重新注册
            2.因为账户被封重试
            3.因为账户认证错误重试
        """
        self.warn('Login...')
        url = f'http://{self.domain}/ucp.php?mode=login'
        data = {
            "username": self.usr,
            "password": self.pwd,
            "login": "******",
            "redirect": f"./index.php&sid={self.sid}"
        }
        resp = self.session.post(url, data=data, verify=False, timeout=120)
        self.sid = ''.join(re.findall("sid=(.*?)'", resp.text)[:1])
        self.info(f"SID: {self.sid}")
        if self.usr not in resp.text:
            self.error('Auth faild')
            self.SaveError('Autherror.html', resp)
            if "已被封禁" in resp.text:
                DarkNet_User.update({
                    "useful": False
                }).where(DarkNet_User.user == self.usr).execute()
            self.Reg()
            raise ValueError
        else:
            self.report('Auth Success')
            self.types = {
                item('.index_list_title').attr('href').split('=')[1].split('&')
                [0]: item('tr:nth-child(1) > td').text().split()[0]
                for item in jq(resp.text)('.ad_table_b').items()
            }
            self.report(self.types)
Пример #24
0
def ParserSelect(text, url, types, city):
    jqdata = jq(text)
    payload = {}

    try:

        if types == 'xxx':
            for item in jqdata('.xxx').items():

                hid = item.text()
                payload[hid] = {
                    "hid": hid,
                }
                addtotal()
                success(f"{hid}")

        elif types == 'xxx_details':
            payload = {}
            addupdate()

    except Exception as e:
        raise

    return payload
Пример #25
0
Файл: test.py Проект: bm-x/Node
import requests as request
import urllib.parse as url
from pyquery import PyQuery as jq

cookies = {}

html = request.get("https://www.baidu.com/").text
dom = jq(html)
print(dom('#lg'))


def do_login():
    res = request.post(
        'http://tgkb168.com/muserChkLoginc.asp?hx66=login',
        allow_redirects=False,
        data='username=%C1%F5%BA%E3&password=qwer7226361',
        headers={'Content-Type': 'application/x-www-form-urlencoded'})
    for i in res.cookies.items():
        cookies[i[0]] = i[1]
    for k, v in cookies.items():
        print(k, v)


# do_login()


def do_comm_request(url):
    return request.get(url, allow_redirects=False, cookies=cookies)


def get_index_page():
Пример #26
0
import requests
from pyquery import PyQuery as jq
import re
import json

ar = []
for i in range(1, 774):
    href = "http://shige.laiyo.com/leixing_%dA%d.aspx"
    url = href % (i, 1)
    print("requesting", url)
    resp = requests.get(url)
    print("response over", resp.status_code)
    resp.encoding = "utf8"
    html = jq(resp.text)
    category = html('.left .title h1 span').text()
    poems = []
    for j in range(1, 0xffffff):
        url = href % (i, j)
        print("requesting", url)
        resp = requests.get(url)
        print("response over", resp.status_code)
        shige = re.findall("#shige\d+", resp.text)
        if not shige:
            break
        for k in shige:
            poems.append(int(re.search("\d+", k).group()))
    d = {"name": category, "poems": poems}
    ar.append(d)
json.dump(ar,
          open("type.json", "w", encoding="utf8"),
          indent=1,
Пример #27
0
def parse_words(doc, selector):
    try:
        return jq(doc(selector)[0]).text()
    except:
        return jq(doc(selector)).text()
Пример #28
0
    def GetDetails(self, url, muti):
        # time.sleep(2)
        resp = self.session.get(url)
        resp.encoding = "utf8"
        self.CheckIfNeedLogin(resp)
        jqdata = jq(resp.text)
        jqdetail = jqdata(".v_table_1")
        jqperson = jqdata(".v_table_2")

        try:
            uid = FixNums(jqperson("tr:nth-child(5) > td:nth-child(2)").text())

            sid = FixNums(jqdetail("tr:nth-child(3) > td:nth-child(2)").text())

            details = DarkNet_DataSale.select().where(
                (DarkNet_DataSale.sid == sid))
            person = DarkNet_Saler.select().where((DarkNet_Saler.uid == uid))
            notice = DarkNet_Notice.select().where((DarkNet_Notice.sid == sid))
            img = DarkNet_IMGS.select().where((DarkNet_IMGS.sid == sid))

            personDatas = {
                "salenums":
                FixNums(jqperson("tr:nth-child(3) > td:nth-child(4)").text()),
                "totalsales":
                float(jqperson("tr:nth-child(5) > td:nth-child(4)").text()),
                "totalbuys":
                float(jqperson("tr:nth-child(7) > td:nth-child(4)").text()),
            }
            username = jqperson("tr:nth-child(3) > td:nth-child(2)").text()
            if not person:
                personDatas.update({
                    "uid":
                    uid,
                    "user":
                    username,
                    "regtime":
                    moment.date(
                        jqperson("tr:nth-child(7) > td:nth-child(2)").text()).
                    format("YYYY-MM-DD"),
                })
                person = DarkNet_Saler.create(**personDatas)
            else:
                DarkNet_Saler.update(personDatas).where(
                    (DarkNet_Saler.uid == uid)).execute()
                person = person[0].uid

            if not notice:
                notice = DarkNet_Notice.create(**{"sid": sid})
            else:
                notice = notice[0].sid

            detailImages = None
            detailContent = " ".join(
                jqdata(".postbody .content").text().split())
            if not img:
                urls = [_.attr("src") for _ in jqdata(".postbody img").items()]
                img = DarkNet_IMGS.create(**{
                    "sid": sid,
                    "img": urls,
                    "detail": detailContent
                })
                detailImages = self.SavePics(urls, sid)
            else:
                img = img[0].sid

            currentYear = moment.now().year
            soldNum = FixNums(
                jqdetail("tr:nth-child(7) > td:nth-child(4)").text(), to=99999)
            toCurrentYearDateTime = moment.date(
                f"{currentYear} " +
                jqdetail("tr:nth-child(3) > td:nth-child(6)").text())
            RealUpTimeJQ = jqdata(".author")
            RealUpTimeJQ.remove("a")
            RealUpTimeJQ.remove("span")
            RealUpTime = moment.date(RealUpTimeJQ.text().replace(
                "年", "").replace("月", "").replace("日", ""))
            RealUpTime = RealUpTime if RealUpTime._date else toCurrentYearDateTime
            detailsDatas = {
                "lasttime":
                moment.date(f"{currentYear} " +
                            jqdetail("tr:nth-child(7) > td:nth-child(6)").text(
                            )).format("YYYY-MM-DD HH:mm:ss"),
                "priceBTC":
                float(
                    jqdetail(
                        "tr:nth-child(3) > td:nth-child(4) > span").text()),
                "priceUSDT":
                float(
                    jqdetail("tr:nth-child(5) > td:nth-child(4)").text().split(
                    )[0]),
                "lines":
                muti["lines"],
                "uptime":
                RealUpTime.format("YYYY-MM-DD HH:mm:ss"),
                "hot":
                muti["hot"],
                "types":
                jqdetail("tr:nth-child(5) > td:nth-child(2)").text(),
                "status":
                jqdetail("tr:nth-child(7) > td:nth-child(2)").text(),
                "oversell":
                jqdetail("tr:nth-child(9) > td:nth-child(2)").text(),
                "sold":
                soldNum,
            }

            if not details:
                detailsDatas.update({
                    "sid": sid,
                    "user": person,
                    "area": muti["area"],
                    "title": muti["title"],
                    "detailurl": url,
                    "img": img,
                    "notice": notice,
                })
                details = DarkNet_DataSale.create(**detailsDatas)
                self.MakeMsg(details, detailContent, detailImages, sid,
                             username)
            else:
                self.warn(f'-{RealUpTime}- {muti["title"]}')
                DarkNet_DataSale.update(detailsDatas).where(
                    (DarkNet_DataSale.sid == sid)).execute()

        except Exception as e:
            self.error(f"GetDetails {e}")
            self.SaveError("error_264.html", resp)
            raise
Пример #29
0
 def Reg(self):
     self.warn("Start Regging")
     headers = {
         "Accept":
         "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
         "Accept-Encoding":
         "gzip, deflate",
         "Accept-Language":
         "zh-CN,zh;q=0.9,en;q=0.8",
         "Cache-Control":
         "no-cache",
         "Connection":
         "keep-alive",
         "Content-Type":
         "application/x-www-form-urlencoded",
         "Origin":
         f"http://{self.domain}",
         "Pragma":
         "no-cache",
         "Referer":
         f"http://{self.domain}/ucp.php?mode=register&sid={self.sid}",
         "Upgrade-Insecure-Requests":
         "1",
         "User-Agent":
         "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
     }
     step1resp = self.session.get(
         f"http://{self.domain}/ucp.php?mode=register").text
     step1 = jq(step1resp)
     self.info(f'RegPage Confirmed. {"sid" in step1resp}')
     token = step1('input[name="form_token"]').attr("value")
     self.report(f"Got Token: {token}")
     creation_time = step1('input[name="creation_time"]').attr("value")
     self.report(f"Got Create_time: {creation_time}")
     url = f"http://{self.domain}/ucp.php?mode=register"
     step2resp = self.session.post(
         url,
         data={
             "agreed": "===好的,我已明白,请跳转到下一页继续注册====",
             "change_lang": "",
             "creation_time": creation_time,
             "form_token": token,
         },
         headers=headers,
     )
     self.SaveError("step2.html", step2resp)
     step2 = jq(step2resp.text)
     token = step2('input[name="form_token"]').attr("value")
     creation_time = step2('input[name="creation_time"]').attr("value")
     qa_answer = re.findall("请在右边框中输入: (.*?):</label>", step2resp.text)[0]
     self.report(f"Got answer: {qa_answer}")
     qa_confirm_id = step2("#qa_confirm_id").attr("value")
     self.usr = self.RandomKey(12)
     self.pwd = self.RandomKey()
     self.info(f"set Usr: {self.usr} ,Pwd: {self.pwd}")
     data = {
         "username":
         self.usr,
         "new_password":
         self.pwd,
         "password_confirm":
         self.pwd,
         "email":
         "*****@*****.**",
         "lang":
         "zh_cmn_hans",
         "tz_date":
         "UTC+08:00+-+Asia/Brunei+-+" +
         moment.now().format("DD+MM月+YYYY,+HH:mm"),
         "tz":
         "Asia/Hong_Kong",
         "agreed":
         "true",
         "change_lang":
         "0",
         "qa_answer":
         qa_answer,
         "qa_confirm_id":
         qa_confirm_id,
         "submit":
         " 用户名与密码已填好,+点此提交 ",
         "creation_time":
         creation_time,
         "form_token":
         token,
     }
     resp = self.session.post(url, data=data, headers=headers)
     try:
         assert "感谢注册" in resp.text
         self.report("Reg success!")
         DarkNet_User.create(**{"user": self.usr, "pwd": self.pwd})
     except AssertionError:
         self.error(jq(resp.text).text())
         self.SaveError("reg.html", resp)
Пример #30
0
def part(son):
    partName = son.find(".cont p").eq(0).text()
    return {partName: filt(jq(son).find(".cont").html())}