BeautifulSoup.findВсе ничего не печатать - PullRequest
0 голосов
/ 28 декабря 2018

Я проверил логин 200 в ответ, но результат ничего не печатает.Этот код:

import requests
from bs4 import BeautifulSoup

file_in = 'D:\OneDrive\Documents\GPIP\Files\scraping\idlinkedin.csv'
dataset = open(file_in, "r")

def login(iemail,ipassword):
    client = requests.Session()

    HOMEPAGE_URL = 'https://www.linkedin.com'
    LOGIN_URL = 'https://www.linkedin.com/uas/login-submit'

    html = client.get(HOMEPAGE_URL).content
    soup = BeautifulSoup(html, "html.parser")
    csrf = soup.find(id="loginCsrfParam-login")['value']

    login_information = {
        'session_key': iemail,
        'session_password': ipassword,
        'loginCsrfParam': csrf,
    }

    client.post(LOGIN_URL, data=login_information)

    for username in dataset:
        item_url = 'https://www.linkedin.com/in/' + username.strip()
        source_code = client.get(item_url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, features='html.parser')
        for item_name in soup.findAll('h1', {'class': 'pv-top-card-section__name inline t-24 t-black t-normal'}):
            print(item_name)

# MAIN
login('theusername','thepassword')

В этой строке предполагается напечатать имя аккаунта, к сожалению, в результате ничего не будет.

for item_name in soup.findAll('h1', {'class': 'pv-top-card-section__name inline t-24 t-black t-normal'}):
                print(item_name)

1 Ответ

0 голосов
/ 28 декабря 2018

Проблема здесь заключается в том, что вы делаете код на основе того, что вы ищете в элементах браузера (который отображается на F12 в браузере Chrome), а не на основе того, какой ответ вы получаете в функции request.get.Я сталкивался с той же проблемой, когда выполнял утилизацию с помощью instagram.com -> (пожалуйста, обратитесь по этой ссылке на git hub https://github.com/simplyshravan/python_learning/blob/master/Using_beautifulsoup.py).

Всегда ищите то, что вы получаете, а не то, как это выглядит.потратить пару часов ниже - это код для извлечения информации о пользователе из linkedin.

import requests
from bs4 import BeautifulSoup
import json

file_in = r'D:\OneDrive\Documents\GPIP\Files\scraping\idlinkedin.csv'
dataset = open(file_in, "r")

def login(iemail,ipassword):
    client = requests.Session()

    HOMEPAGE_URL = 'https://www.linkedin.com'
    LOGIN_URL = 'https://www.linkedin.com/uas/login-submit'

    html = client.get(HOMEPAGE_URL).content
    soup = BeautifulSoup(html, "html.parser")
    csrf = soup.find(id="loginCsrfParam-login")['value']

    login_information = {
        'session_key': iemail,
        'session_password': ipassword,
        'loginCsrfParam': csrf,
    }

    client.post(LOGIN_URL, data=login_information)

    for username in dataset:
        item_url = 'https://www.linkedin.com/in/' + username.strip()
        print(item_url)
        source_code = client.get(item_url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, 'html.parser')
        for item_name in soup.find_all('code'):
            if str(item_name).find('firstName') > -1:
                for i in json.loads(item_name.text)['included']:
                    #print(i)
                    if len(i['$deletedFields']) > 0:
                        if i['$type']=='com.linkedin.voyager.identity.shared.MiniProfile':
                            if i["publicIdentifier"]==username.strip():
                                    print(i['firstName']+' '+i['lastName'])
                                    print(i['lastName'])
                                    print(i['occupation'])
                                    break

# MAIN
login('username','password')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...