Mencari bantuan untuk menggores situs web yang memerlukan login. Pada dasarnya situs web ini adalah untuk mendapatkan harga kartu perdagangan (yang saya yakini berasal dari ebay) tetapi dalam format yang memungkinkan pencarian di luar 90 hari yang ada di situs ebays. Url login adalah https://members.pwccmarketplace.com/login Url yang saya cari adalah https://members.pwccmarketplace.com/ Saya mencari posting sebelumnya dan menemukan satu yang saya pikir saya bisa mencoba meniru tapi untuk tidak berhasil. Di bawah ini adalah kodenya, bantuan apa pun apakah itu bisa berfungsi atau tidak akan dihargai.

#https://stackoverflow.com/questions/47438699/scraping-a-website-with-python-3-that-requires-login
import requests
from lxml import html
from bs4 import BeautifulSoup
import unicodecsv as csv
import os
import sys
import io
import time
import datetime
from datetime import datetime
from datetime import date
import pandas as pd
import numpy as np
from time import sleep
from random import randint
from urllib.parse import quote

Product_name = []
Price = []
Date_sold = []

url = "https://www.pwccmarketplace.com/login"
values = {"email": "xyz@abc.com",
          "password": "password"}

session = requests.Session()

r = session.post(url, data=values)

Search_name = input("Search for: ")
Exclude_terms = input("Exclude these terms (- infront of all, no spaces): ")
qstr = quote(Search_name)
qstrr = quote(Exclude_terms)
Number_pages = int(input("Number of pages you want searched (Number -1): "))

pages = np.arange(1, Number_pages)

for page in pages:

    params = {"Category": 6, "deltreeid": 6, "do": "Delete Tree"}
    url = "https://www.pwccmarketplace.com/market-price-research?q=" + qstr + "+" + qstrr + "&year_min=2004&year_max=2020&price_min=0&price_max=10000&sort_by=date_desc&sale_type=auction&items_per_page=250&page=" + str(page)

    result = session.get(url, data=params)

    soup = BeautifulSoup(result.text, "lxml")

    search = soup.find_all('tr')

    sleep(randint(2,10))

    for container in search:

Kode berlanjut tetapi tidak relevan dengan pertanyaan ini.

1
pythondazza 7 Juni 2020, 07:12

1 menjawab

Jawaban Terbaik

Ada token yang dikirim dalam payload saat Anda melakukan POST https://members.pwccmarketplace.com/login. Token ini terletak di tag input dan dapat digores menggunakan beautifulsoup :

import requests
from bs4 import BeautifulSoup

session = requests.Session()

email = "your@email.com"
password = "your_password"

r = session.get("https://members.pwccmarketplace.com/login")

soup = BeautifulSoup(r.text, "html.parser")
token = soup.find("input", { "name": "_token"})["value"]

r = session.post(
    "https://members.pwccmarketplace.com/login",
    data = {
        "_token": token,
        "redirect": "",
        "email": email,
        "password": password,
        "remember": "true"
    }
)
0
Bertrand Martel 7 Juni 2020, 09:33