2017-10-16 14 views
0

Mon but est de saisir tous les numéros de cas et de les mettre dans un dossier Excel. Les cas sont dans la 2ème colonnePython: trouver le 2ème td enfant de tous les enfants tr

Mon code:

courtCases = driver.find_elements_by_css_selector('body > table:nth-child(3) > tbody > tr:nth-child* > td:nth-child(2)') 
for courtCase in courtCases: 
    print(courtCase.text) 

Cela jette une erreur

selenium.common.exceptions.InvalidSelectorException: Message: sélection incorrect: Un sélecteur non valide ou illégale a été spécifié.

j'ai pu obtenir une affaire judiciaire en plaçant le chemin css exact et XPath comme:

courtCases = driver.find_elements_by_css_selector('body > table:nth-child(3) > tbody > tr:nth-child(7) > td:nth-child(2) > font') 

Je dois rassembler toutes de la cour dans la 2ème colonne td: nième enfant (2).

En tout cas, ma question est la suivante: quelqu'un peut-il m'aider à écrire un bon css-selector ou xpath pour obtenir toutes les dates de la cour?

Certains des html

<html> 
<head> 
<title>Wejis - Dayton Municipal Court</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body> 
<table width="750" border="0"> 
    <tr> 
    <td width="185"><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif">Run 
     Date: 10/16/2017 </font></td> 
    <td width="380"><div align="center"> 
     <p><strong><font color="#003399" size="4" face="Verdana, Arial, Helvetica, sans-serif">Housing 
      Docket Report</font></strong></p> 
     <p><strong><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif">Dayton 
      Municipal Court</font></strong></p> 
     </div></td> 
    <td width="185"><div align="right"><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif">Run 
     Time: 12:28 PM</font></div></td> 
    </tr> 
</table> 
<table width="750"> 
    <tr><td colspan="4">&nbsp;</td></tr> 
    <tr> 
     <td width="250"><strong><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif">Court Date: September 20, 2017</font></strong></td> 
     <td width="140"><strong><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif">All Sessions</font></strong></td> 
     <td width="130"><div align="center"><strong><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif">Courtroom 3A</font></strong></div></td> 
     <td width="220"><div align="right"><strong><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif">Judge Deirdre E Logan</font></strong></div></td> 
    </tr> 
</table> 
<table width="750" border="0"> 
    <tr> 
    <td colspan="5"><hr></td> 
    </tr> 

      <tr> 
       <td colspan="2"><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Housing Trial</strong></font></td> 
       <td colspan="3"><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong> 8:30AM </strong></font></td> 
      </tr> 
      <tr> 
       <td width="140"><strong><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Defendant Name</font></strong></td> 
       <td width="120"><strong><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Case Number</font></strong></td> 
       <td width="240"><strong><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Charges</font></strong></td> 
       <td width="115"><strong><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Attorney</font></strong></td> 
       <td width="115"><strong><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Location</font></strong></td> 
      </tr> 

       <tr> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Rosal, Jorge</font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">2017-CRM-005695</font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">MAINTAINING EXTERIOR<br></font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif"></font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">1347 Kingsley </font></td> 
       </tr> 

      <tr> 
       <td colspan="2"><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Criminal Court Trial In Jail</strong></font></td> 
       <td colspan="3"><font color="#003399" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong> 9:30AM </strong></font></td> 
      </tr> 
      <tr> 
       <td width="140"><strong><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Defendant Name</font></strong></td> 
       <td width="120"><strong><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Case Number</font></strong></td> 
       <td width="240"><strong><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Charges</font></strong></td> 
       <td width="115"><strong><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Attorney</font></strong></td> 
       <td width="115"><strong><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Location</font></strong></td> 
      </tr> 

       <tr> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Joyner, Melissa</font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">2017-CRB-000784</font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">DRUG ABUSE INSTRUMENT<br>DRUG PARAPHERNALIA/USE OR POSS<br></font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Jenn A. Cunningham-Minnick</font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">1401 Harshman RD</font></td> 
       </tr> 

       <tr> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">Joyner, Melissa</font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">2017-CRM-000775</font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">LITTERING IN PARK<br></font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif"></font></td> 
        <td valign="top"><font color="#003399" size="1" face="Verdana, Arial, Helvetica, sans-serif">1401 Harshman RD</font></td> 
       </tr> 
+0

Avez-vous essayé d'utiliser BeautifulSoup? Une question connexe est ici: https://stackoverflow.com/questions/23377533/python-beautifulsoup-parsing-table. Vous pouvez écrire les données dans une base de données pandas et ensuite écrire un csv en utilisant pandas.to_csv – skrubber

+0

Oui, mais je pense que l'OP favorise les expressions XPath qui, je crois, BeautifulSoup ne supporte pas – Mangohero1

+0

J'ai essayé xlml et ai eu un problème similaire à ceci: les demandes d'importation url = raw_input ("Entrez un site Web pour extraire de l'URL: ") r = requests.get (" http: //" + url) data = R.TEXT soupe = BeautifulSoup (données) Je ne peux pas obtenir le r.text comme dans l'exemple car get: url = raw_input ("Entrer un site web pour extraire l'URL de:") r = requests.get ("http: //" + url) J'ai besoin de l'url et je ne peux accéder à la page en cliquant sur un lien. Si vous rechargez la page Web, une erreur 404 se produit - fichier ou répertoire non trouvé. J'ai besoin d'obtenir les données de ma page Web ouverte – John

Répondre

1

Je l'ai trouvé par un XPath:

courtCases = driver.find_elements_by_xpath('//td[2]/font[@size="1"]') 
for courtCase in courtCases: 
    print(courtCase.text) 

Remarquez que toutes les affaires judiciaires sont de la taille de la police . Si vous deviez omettre cet attribut, vous auriez aussi le temps.

+0

wow !! Je vous remercie. Je dois travailler sur mes compétences xpath. J'ai essayé beaucoup de choses différentes. J'ai pu récupérer toute la table qui contenait les affaires en utilisant '/ html/body/table [3]/*' et j'ai essayé de l'affiner mais je n'avais pas de chance donc j'ai essayé de passer au sélecteur css. – John

+0

Pas de soucis.C'est un * lot * plus facile à trouver si vous savez comment utiliser l'outil Inspecteur de Chrome. :-) – Mangohero1

1

Vous avez un peu plus dans votre sélecteur que vous n'en avez besoin. J'ai trouvé que cela peut être réduit à ci-dessous.

td:nth-child(2) > font[size='1'] 

sélecteurs CSS sont plus rapides et mieux pris en charge que XPath, mais il y a certaines choses, comme la localisation d'un élément par le texte contenu, que seul XPath peut faire.

+0

Approche intéressante, et merci pour cet aperçu. Je pensais que CSS serait plus rapide, je n'étais pas sûr de la façon dont il a été construit. +1 – Mangohero1