คำถามติดแท็ก python-requests

ใช้สำหรับ PYTHON REQUESTS LIBRARY เท่านั้น คำขอเป็นไลบรารี Python HTTP ที่มีคุณสมบัติครบถ้วนพร้อมด้วยตรรกะ API ที่ใช้งานง่าย

7
คำขอ Python - พิมพ์คำขอ http ทั้งหมด (raw) หรือไม่
ในขณะที่ใช้requestsโมดูลมีวิธีใดในการพิมพ์คำร้องขอ HTTP HTTP หรือไม่ ฉันไม่ต้องการแค่ส่วนหัวฉันต้องการบรรทัดคำขอส่วนหัวและเนื้อหาที่พิมพ์ออกมา เป็นไปได้ไหมที่จะเห็นว่าท้ายที่สุดสิ่งที่สร้างขึ้นจากคำขอ HTTP

5
ฉันสามารถตั้งค่า max_retries สำหรับคำร้องขอได้หรือไม่
โมดูลคำขอ Python นั้นเรียบง่ายและสวยงาม แต่มีสิ่งหนึ่งที่ทำให้ฉันรำคาญ เป็นไปได้ที่จะได้รับการร้องขอการยกเว้นการเชื่อมต่อกับข้อความเช่น: Max retries exceeded with url: ... แสดงว่าคำขอสามารถพยายามเข้าถึงข้อมูลได้หลายครั้ง แต่ไม่มีการกล่าวถึงความเป็นไปได้นี้ในเอกสาร ดูซอร์สโค้ดฉันไม่พบที่ที่ฉันสามารถเปลี่ยนค่าเริ่มต้น (สมมุติ 0) ดังนั้นเป็นไปได้หรือไม่ที่จะกำหนดจำนวนการลองใหม่สูงสุดสำหรับคำขอ

19
หมดเวลาสำหรับการร้องขอของ python รับคำตอบทั้งหมด
ฉันกำลังรวบรวมสถิติในรายการเว็บไซต์และฉันใช้คำขอเพื่อความเรียบง่าย นี่คือรหัสของฉัน: data=[] websites=['http://google.com', 'http://bbc.co.uk'] for w in websites: r= requests.get(w, verify=False) data.append( (r.url, len(r.content), r.elapsed.total_seconds(), str([(l.status_code, l.url) for l in r.history]), str(r.headers.items()), str(r.cookies.items())) ) ตอนนี้ฉันต้องการrequests.getหมดเวลาหลังจาก 10 วินาทีดังนั้นการวนซ้ำไม่ติด คำถามนี้ได้รับความสนใจมาก่อนเช่นกัน แต่ไม่มีคำตอบใดที่สะอาด ฉันจะวางรางวัลนี้เพื่อรับคำตอบที่ดี ฉันได้ยินมาว่าอาจไม่ได้ใช้การร้องขอเป็นความคิดที่ดี แต่ถ้าอย่างนั้นฉันจะได้รับสิ่งที่ดีได้อย่างไร (สิ่งที่อยู่ใน tuple)

9
วิธีการติดตั้งแพคเกจออฟไลน์?
วิธีที่ดีที่สุดในการดาวน์โหลดแพ็กเกจหลามคืออะไรและเป็นการอ้างอิงจาก pypi สำหรับการติดตั้งออฟไลน์ในเครื่องอื่น? มีวิธีง่ายๆในการทำเช่นนี้กับ pip หรือ easy_install หรือไม่? ฉันกำลังพยายามติดตั้งไลบรารีคำขอบนกล่อง FreeBSD ที่ไม่ได้เชื่อมต่อกับอินเทอร์เน็ต

10
พร็อกซี่พร้อมโมดูล Python 'Request'
สั้น ๆ ง่ายๆเกี่ยวกับโมดูลคำขอยอดเยี่ยมสำหรับ Python ฉันดูเหมือนจะไม่พบในเอกสารประกอบสิ่งที่ตัวแปร 'พร็อกซี' ควรมี เมื่อฉันส่ง dict ด้วยค่า "IP: PORT" มาตรฐานก็จะปฏิเสธมันเพื่อขอ 2 ค่า ดังนั้นฉันเดา (เพราะดูเหมือนจะไม่ครอบคลุมในเอกสาร) ว่าค่าแรกคือ ip และพอร์ตที่สอง? เอกสารพูดถึงสิ่งนี้เท่านั้น: พร็อกซี่ - (เป็นทางเลือก) โปรโตคอลการแมปพจนานุกรมเป็น URL ของพรอกซี ดังนั้นฉันจึงลองทำเช่นนี้ ... ฉันควรทำยังไงดี? proxy = { ip: port} และฉันควรแปลงเหล่านี้เป็นประเภทก่อนที่จะวางลงใน dict? r = requests.get(url,headers=headers,proxies=proxy)

3
การใช้ส่วนหัวกับวิธีการรับของ Python ร้องขอไลบรารี
ดังนั้นเมื่อเร็ว ๆ นี้ฉันจึงสะดุดกับห้องสมุดที่ยอดเยี่ยมนี้สำหรับการจัดการคำขอ HTTP ใน Python; พบได้ที่นี่http://docs.python-requests.org/en/latest/index.html ฉันชอบทำงานกับมัน แต่ฉันไม่สามารถหาวิธีเพิ่มส่วนหัวในคำขอของฉันได้ ช่วยด้วย?

12
เกินความพยายามสูงสุดที่มี URL ในคำขอ
ฉันพยายามรับเนื้อหาของApp Store> ธุรกิจ : import requests from lxml import html page = requests.get("https://itunes.apple.com/in/genre/ios-business/id6000?mt=8") tree = html.fromstring(page.text) flist = [] plist = [] for i in range(0, 100): app = tree.xpath("//div[@class='column first']/ul/li/a/@href") ap = app[0] page1 = requests.get(ap) เมื่อฉันลองrangeกับ(0,2)มันใช้งานได้ แต่เมื่อฉันใส่rangeใน100มันแสดงให้เห็นข้อผิดพลาดนี้: Traceback (most recent call last): File "/home/preetham/Desktop/eg.py", line 17, in <module> …

3
Python ขอโพสต์ด้วยข้อมูลพารามิเตอร์
นี่คือคำขอดิบสำหรับการเรียก API: POST http://192.168.3.45:8080/api/v2/event/log?sessionKey=b299d17b896417a7b18f46544d40adb734240cc2&format=json HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: application/json Content-Length: 86 Host: 192.168.3.45:8080 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5) {"eventType":"AAS_PORTAL_START","data":{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}""" คำขอนี้ส่งคืนการตอบกลับสำเร็จ (2xx) ตอนนี้ฉันกำลังพยายามโพสต์คำขอนี้โดยใช้requests: >>> import requests >>> headers = {'content-type' : 'application/json'} >>> data ={"eventType":"AAS_PORTAL_START","data{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}} >>> url = "http://192.168.3.45:8080/api/v2/event/log?sessionKey=9ebbd0b25760557393a43064a92bae539d962103&format=xml&platformId=1" >>> requests.post(url,params=data,headers=headers) <Response [400]> ทุกอย่างดูดีสำหรับฉันและฉันไม่แน่ใจว่าสิ่งที่ฉันโพสต์ผิดเพื่อให้ได้การตอบสนอง 400

1
คำขอ - จะทราบได้อย่างไรว่าคุณได้รับ 404
ฉันกำลังใช้ไลบรารีคำขอและเข้าถึงเว็บไซต์เพื่อรวบรวมข้อมูลด้วยรหัสต่อไปนี้: r = requests.get(url) ฉันต้องการเพิ่มการทดสอบข้อผิดพลาดเมื่อป้อน URL ที่ไม่เหมาะสมและส่งกลับข้อผิดพลาด 404 หากฉันตั้งใจป้อน URL ที่ไม่ถูกต้องเมื่อฉันทำสิ่งนี้: print r ฉันได้รับสิ่งนี้: <Response [404]> แก้ไข: ฉันต้องการทราบวิธีการทดสอบว่า ประเภทวัตถุยังคงเหมือนเดิม เมื่อฉันทำr.contentหรือr.textฉันก็แค่ได้รับ HTML ของหน้าเว็บ 404 ที่กำหนดเอง

12
คำขอแบบอะซิงโครนัสกับคำขอ Python
ฉันลองตัวอย่างที่ให้ไว้ในเอกสารประกอบของไลบรารีคำขอสำหรับหลาม ด้วยasync.map(rs)ฉันได้รับรหัสตอบกลับ แต่ฉันต้องการรับเนื้อหาของแต่ละหน้าที่ร้องขอ เช่นนี้ไม่ทำงาน: out = async.map(rs) print out[0].content

4
จะใช้คำขอ Python เพื่อปลอมการเยี่ยมชมเบราว์เซอร์ได้อย่างไร
ฉันต้องการรับเนื้อหาจากเว็บไซต์ด้านล่าง หากฉันใช้เบราว์เซอร์เช่น Firefox หรือ Chrome ฉันจะได้รับหน้าเว็บไซต์จริงที่ฉันต้องการ แต่ถ้าฉันใช้แพคเกจคำขอ Python (หรือwgetคำสั่ง) เพื่อรับมันจะส่งคืนหน้า HTML ที่แตกต่างกันโดยสิ้นเชิง ฉันคิดว่าผู้พัฒนาเว็บไซต์ได้ทำการบล็อกบางส่วนสำหรับสิ่งนี้ดังนั้นคำถามคือ: ฉันจะปลอมการเยี่ยมชมเบราว์เซอร์โดยใช้คำขอ python หรือคำสั่ง wget ได้อย่างไร http://www.ichangtou.com/#company:data_000008.html

5
ฉันจะใช้การร้องขอใน asyncio ได้อย่างไร?
ฉันต้องการทำงานคำขอ http คู่ขนานในasyncioแต่ฉันพบว่าpython-requestsจะบล็อกการวนซ้ำเหตุการณ์ของasyncio. ฉันพบaiohttpแต่ไม่สามารถให้บริการคำขอ http โดยใช้พร็อกซี http ดังนั้นฉันต้องการทราบว่ามีวิธีทำคำขอ http แบบอะซิงโครนัสด้วยความช่วยเหลือของasyncio.

4
python ร้องขอการอัปโหลดไฟล์
ฉันทำงานง่ายๆในการอัปโหลดไฟล์โดยใช้ไลบรารีคำขอของ Python ฉันค้นหา Stack Overflow และดูเหมือนจะไม่มีใครมีปัญหาเดียวกันนั่นคือเซิร์ฟเวอร์ไม่ได้รับไฟล์: import requests url='http://nesssi.cacr.caltech.edu/cgi-bin/getmulticonedb_release2.cgi/post' files={'files': open('file.txt','rb')} values={'upload_file' : 'file.txt' , 'DB':'photcat' , 'OUT':'csv' , 'SHORT':'short'} r=requests.post(url,files=files,data=values) ฉันกรอกค่าของคีย์เวิร์ด 'upload_file' ด้วยชื่อไฟล์ของฉันเพราะถ้าฉันปล่อยว่างไว้มันจะขึ้นว่า Error - You must select a file to upload! และตอนนี้ฉันได้รับ File file.txt of size bytes is uploaded successfully! Query service results: There were 0 lines. ซึ่งจะปรากฏขึ้นเมื่อไฟล์ว่างเปล่าเท่านั้น …

2
อะไรคือความแตกต่างระหว่าง 'เนื้อหา' และ 'ข้อความ'
ฉันใช้ไลบรารีคำขอ Python ที่ยอดเยี่ยม ผมสังเกตเห็นว่าเอกสารที่ดีมีตัวอย่างหลายวิธีที่จะทำบางสิ่งบางอย่างได้โดยไม่ต้องอธิบายว่าทำไม ตัวอย่างเช่นทั้งสองr.textและr.contentแสดงเป็นตัวอย่างวิธีรับการตอบสนองของเซิร์ฟเวอร์ แต่มีที่ไหนอธิบายว่าคุณสมบัติเหล่านี้ทำอะไร? ตัวอย่างเช่นฉันจะเลือกอย่างใดอย่างหนึ่งเมื่อใด ฉันเห็นว่า thar r.textส่งคืนอ็อบเจ็กต์ Unicode ในบางครั้งและฉันคิดว่าจะมีความแตกต่างสำหรับการตอบสนองที่ไม่ใช่ข้อความ แต่เอกสารทั้งหมดนี้อยู่ที่ไหน? โปรดทราบว่าเอกสารที่เชื่อมโยงจะระบุ: คุณยังสามารถเข้าถึงเนื้อหาการตอบสนองเป็นไบต์สำหรับคำขอที่ไม่ใช่ข้อความ: แต่จากนั้นก็แสดงตัวอย่างการตอบกลับข้อความ! ฉันสามารถสมมติได้ว่าคำพูดข้างต้นหมายถึงการพูดnon-text responsesแทนnon-text requestsเนื่องจากคำขอที่ไม่ใช่ข้อความไม่สมเหตุสมผลใน HTTP ในระยะสั้นเอกสารที่เหมาะสมของไลบรารีอยู่ที่ไหนเมื่อเทียบกับบทช่วยสอน (ยอดเยี่ยม) ในไซต์คำขอ Python

8
คำขอ Python และเซสชันถาวร
ฉันใช้โมดูลคำขอ (เวอร์ชัน 0.10.0 พร้อม Python 2.5) ฉันได้หาวิธีการส่งข้อมูลไปยังแบบฟอร์มการเข้าสู่ระบบบนเว็บไซต์และเรียกดูรหัสเซสชันแล้ว แต่ฉันไม่เห็นวิธีที่ชัดเจนในการใช้รหัสเซสชันนี้ในการร้องขอในภายหลัง ใครสามารถกรอกจุดไข่ปลาในโค้ดด้านล่างหรือแนะนำแนวทางอื่นได้หรือไม่? >>> import requests >>> login_data = {'formPosted':'1', 'login_email':'me@example.com', 'password':'pw'} >>> r = requests.post('https://localhost/login.py', login_data) >>> >>> r.text u'You are being redirected <a href="profilePage?_ck=1349394964">here</a>' >>> r.cookies {'session_id_myapp': '127-0-0-1-825ff22a-6ed1-453b-aebc-5d3cf2987065'} >>> >>> r2 = requests.get('https://localhost/profile_data.json', ...)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.