สอบถามค่ะ บาง url ที่ดึงมา ใช้ไม่ได้ค่ะ

แนะนำ สอบถาม ภาษา C สำหรับผู้เริ่มต้น ภาษา Java ภาษา Python

Moderators: mindphp, ผู้ดูแลกระดาน

bolue
PHP Super Hero Member
PHP Super Hero Member
Posts: 677
Joined: 04/06/2020 10:05 am

สอบถามค่ะ บาง url ที่ดึงมา ใช้ไม่ได้ค่ะ

Post by bolue »

บาง url ที่นำมา for แล้ว if ต่อเลือกเฉพาะ a ที่เป็น https ใช้ไม่ได้ค่ะ ทั้งๆ ที่ก็เป็น https แต่กลับ error
code ไม่สามารถใช้กับ บาง url ได้ค่ะมีวิธีแก้ยังไงคะ

Code: Select all

html = urlopen(link.get('href')).read()
C++ & java & Python-1.png
ปิดตัว if จะสามารใช้ได้หมด
C++ & java & Python-1.png
C++ & java & Python-1.png (146.69 KiB) Viewed 283 times


แต่เมื่อเปิด if จะรันสุดถึงแค่ none ค่ะ
C++ & java & Python-2.png
C++ & java & Python-2.png (158.63 KiB) Viewed 283 times

และบาง url ไม่สามารถใช้ ได้ค่ะทั้งๆที่เป็น https

Code: Select all

html = urlopen(URL).read()
Last edited by bolue on 11/06/2020 3:20 pm, edited 1 time in total.

bolue
PHP Super Hero Member
PHP Super Hero Member
Posts: 677
Joined: 04/06/2020 10:05 am

Re: สอบถามค่ะ บาง url ที่ดึงมา ใช้ไม่ได้ค่ะ

Post by bolue »

แก้ไขด้วยการ เอา if ออก แล้ว for เปลี่ยนมาใช้ คำสั่งนี้แทน

Code: Select all

for link in soup.find_all('a' ,href=re.compile('^https')):

bolue
PHP Super Hero Member
PHP Super Hero Member
Posts: 677
Joined: 04/06/2020 10:05 am

Re: สอบถามค่ะ บาง url ที่ดึงมา ใช้ไม่ได้ค่ะ

Post by bolue »

code ไม่สามารถใช้กับ บาง url ได้ค่ะมีวิธีแก้ยังไงคะ

Code: Select all

html = urlopen(URL).read()
C++ & java & Python-1.png

User avatar
jirawoot
PHP VIP Members
PHP VIP Members
Posts: 2761
Joined: 17/06/2019 10:30 am

Re: สอบถามค่ะ บาง url ที่ดึงมา ใช้ไม่ได้ค่ะ

Post by jirawoot »

แปะโค้ดทั้งหมดมาหน่อยครับ

bolue
PHP Super Hero Member
PHP Super Hero Member
Posts: 677
Joined: 04/06/2020 10:05 am

Re: สอบถามค่ะ บาง url ที่ดึงมา ใช้ไม่ได้ค่ะ

Post by bolue »

jirawoot wrote:
11/06/2020 4:17 pm
แปะโค้ดทั้งหมดมาหน่อยครับ

Code: Select all

from flask import  Flask, render_template, request
import socket, time
from urllib.parse import urlparse
from urllib.request import urlopen
from bs4 import BeautifulSoup
import psycopg2 as p
import re

@app.route('/url' , methods=['POST', 'GET'])
def url():
    if request.method == 'POST':
        URL = request.form['url']
        print (URL, 'timing:')
        try:
            con = p.connect(host='127.0.0.1', database='test', user='postgres', password='0845770809')
            cur = con.cursor()
            urlinfo = urlparse(URL)

            start = time.time()
            ip = socket.gethostbyname(urlinfo.netloc)
            dns_tm = time.time() - start
            print('DNS:\t\t{:.3f} seconds'.format(dns_tm))

            start = time.time()
            html = str(urlopen(URL).read())
            load_tm = time.time() - start
            print('load:\t\t{:.3f} seconds'.format(load_tm))
            print('w/o DNS:\t{:.3f} seconds'.format(load_tm - dns_tm))

            sql = """INSERT INTO ur (url,dns,load_ur,wo_dns)
                        VALUES ('%s','%s','%s','%s') RETURNING id;""" % (URL,dns_tm,load_tm,load_tm - dns_tm)
            sql = sql.encode('utf-8')
            cur.execute(sql)
            id1 = str(cur.fetchone()[0])
            con.commit()
            soup = BeautifulSoup(html,"html.parser")

            for link in soup.find_all('a' ,href=re.compile('^https')):

                # time.sleep(1)
                print(link.get('href'))
                urlinfo2 = urlparse(link.get('href'))

                start = time.time()
                ip = socket.gethostbyname(urlinfo2.netloc)
                dns_tm2 = time.time() - start
                print('DNS:\t\t{:.3f} seconds'.format(dns_tm2))

                start = time.time()
                html = str(urlopen(link.get('href')).read())
                load_tm2 = time.time() - start
                print('load:\t\t{:.3f} seconds'.format(load_tm2))
                print('w/o DNS:\t{:.3f} seconds'.format(load_tm2 - dns_tm2))


                sql = """INSERT INTO des_ur (url,dns,load_ur,wo_dns,ur_id)
                                            VALUES ('%s','%s','%s','%s','%s')""" % (
                link.get('href'), dns_tm, load_tm, load_tm - dns_tm,id1)
                sql = sql.encode('utf-8')
                cur.execute(sql)
                con.commit()


            return html

        except p.DatabaseError:
            print('Error %s' % p.DatabaseError)

User avatar
jirawoot
PHP VIP Members
PHP VIP Members
Posts: 2761
Joined: 17/06/2019 10:30 am

Re: สอบถามค่ะ บาง url ที่ดึงมา ใช้ไม่ได้ค่ะ

Post by jirawoot »

ลองใส่อันนี้ดูครับ

Code: Select all

from urllib.request import urlopen, Request

req = Request(URL, headers={'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'})
html = str(urlopen(req).read())

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 24805
Joined: 22/09/2008 6:18 pm
Contact:

Re: สอบถามค่ะ บาง url ที่ดึงมา ใช้ไม่ได้ค่ะ

Post by mindphp »

ปัญหา นี้เป็นยังไงบ้าง
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

bolue
PHP Super Hero Member
PHP Super Hero Member
Posts: 677
Joined: 04/06/2020 10:05 am

Re: สอบถามค่ะ บาง url ที่ดึงมา ใช้ไม่ได้ค่ะ

Post by bolue »

mindphp wrote:
14/06/2020 2:21 am
ปัญหา นี้เป็นยังไงบ้าง
เรียบร้อยแล้วค่ะ

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - C/C++ & java & Python”

Who is online

Users browsing this forum: Bing [Bot] and 1 guest