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

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

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

ภาพประจำตัวสมาชิก
MBMoo
PHP VIP Members
PHP VIP Members
โพสต์: 25635
ลงทะเบียนเมื่อ: 04/06/2020 10:05 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย MBMoo »

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

โค้ด: เลือกทั้งหมด

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 1240 times


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

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

โค้ด: เลือกทั้งหมด

html = urlopen(URL).read()
แก้ไขล่าสุดโดย MBMoo เมื่อ 11/06/2020 3:20 pm, แก้ไขไปแล้ว 1 ครั้ง.
ภาพประจำตัวสมาชิก
MBMoo
PHP VIP Members
PHP VIP Members
โพสต์: 25635
ลงทะเบียนเมื่อ: 04/06/2020 10:05 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย MBMoo »

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

โค้ด: เลือกทั้งหมด

for link in soup.find_all('a' ,href=re.compile('^https')):
ภาพประจำตัวสมาชิก
MBMoo
PHP VIP Members
PHP VIP Members
โพสต์: 25635
ลงทะเบียนเมื่อ: 04/06/2020 10:05 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย MBMoo »

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

โค้ด: เลือกทั้งหมด

html = urlopen(URL).read()
C++ & java & Python-1.png
ภาพประจำตัวสมาชิก
jirawoot
PHP VIP Members
PHP VIP Members
โพสต์: 3129
ลงทะเบียนเมื่อ: 17/06/2019 10:30 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย jirawoot »

แปะโค้ดทั้งหมดมาหน่อยครับ
ภาพประจำตัวสมาชิก
MBMoo
PHP VIP Members
PHP VIP Members
โพสต์: 25635
ลงทะเบียนเมื่อ: 04/06/2020 10:05 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย MBMoo »

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

โค้ด: เลือกทั้งหมด

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)
ภาพประจำตัวสมาชิก
jirawoot
PHP VIP Members
PHP VIP Members
โพสต์: 3129
ลงทะเบียนเมื่อ: 17/06/2019 10:30 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย jirawoot »

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

โค้ด: เลือกทั้งหมด

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())
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41251
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

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

โพสต์ที่ยังไม่ได้อ่าน โดย 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
ภาพประจำตัวสมาชิก
MBMoo
PHP VIP Members
PHP VIP Members
โพสต์: 25635
ลงทะเบียนเมื่อ: 04/06/2020 10:05 am

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

โพสต์ที่ยังไม่ได้อ่าน โดย MBMoo »

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

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 3